mirror of https://github.com/n64decomp/007.git
refresh public
This commit is contained in:
parent
3a796978db
commit
c8f06419d6
23
Makefile
23
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 src/libultra assets assets/obseg \
|
||||
rsp src src/game src/inflate 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
|
||||
|
@ -76,6 +76,9 @@ APPBIN := ge007.$(COUNTRYCODE).bin
|
|||
HEADERFILES := $(foreach dir,src,$(wildcard $(dir)/*.s))
|
||||
HEADEROBJECTS := $(foreach file,$(HEADERFILES),$(BUILD_DIR)/$(file:.s=.o))
|
||||
|
||||
RSPCODE := $(foreach dir,rsp,$(wildcard $(dir)/*.s))
|
||||
RSPOBJECTS := $(foreach file,$(RSPCODE),$(BUILD_DIR)/$(file:.s=.bin))
|
||||
|
||||
CODEFILES := $(foreach dir,src,$(wildcard $(dir)/*.c))
|
||||
CODEOBJECTS := $(foreach file,$(CODEFILES),$(BUILD_DIR)/$(file:.c=.o))
|
||||
|
||||
|
@ -111,14 +114,14 @@ OBSEG_RZ := $(BG_SEG_FILES) $(CHR_RZ_FILES) $(GUN_RZ_FILES) $(PROP_RZ_FILES) $(S
|
|||
IMAGE_BINS := $(foreach dir,assets/images/split,$(wildcard $(dir)/*.bin))
|
||||
IMAGE_OBJS := $(foreach file,$(IMAGE_BINS),$(BUILD_DIR)/$(file:.bin=.o))
|
||||
|
||||
RZFILES := rarezip/rarezip.c
|
||||
RZFILES := inflate/inflate.c
|
||||
RZOBJECTS := $(foreach file,$(RZFILES),$(BUILD_DIR)/src/$(file:.c=.o))
|
||||
|
||||
OBJECTS := $(CODEOBJECTS) $(GAMEOBJECTS) $(RZOBJECTS) $(OBSEGMENT) $(ROMOBJECTS) $(RAMROM_OBJECTS) $(FONT_OBJECTS) $(MUSIC_OBJECTS) $(IMAGE_OBJS)
|
||||
OBJECTS := $(RSPOBJECTS) $(CODEOBJECTS) $(GAMEOBJECTS) $(RZOBJECTS) $(OBSEGMENT) $(ROMOBJECTS) $(RAMROM_OBJECTS) $(FONT_OBJECTS) $(MUSIC_OBJECTS) $(IMAGE_OBJS)
|
||||
|
||||
|
||||
|
||||
INCLUDE := -I . -I include -I include/libultra -I src -I src/game -I src/rarezip
|
||||
INCLUDE := -I . -I include -I include/ultra64 -I src -I src/game -I src/inflate
|
||||
|
||||
CC := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/cc
|
||||
CFLAGS := -Wo,-loopunroll,0 -Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm $(CFLAGWARNING) -woff 819,820,852,821,838 -signed $(INCLUDE) -mips2 $(LCDEFS)
|
||||
|
@ -129,6 +132,7 @@ LDFLAGS := -T undefined_syms.txt -T $(LD_SCRIPT) -Map build/ge007.$(COUNTRYCODE)
|
|||
|
||||
AS := $(TOOLCHAIN)as
|
||||
ASFLAGS := -march=vr4300 -mabi=32 $(INCLUDE) $(ASMDEFS)
|
||||
ARMIPS := $(TOOLS_DIR)/armips
|
||||
ASM_PREPROC := python3 tools/asmpreproc/asm-processor.py
|
||||
|
||||
OBJCOPY := $(TOOLCHAIN)objcopy
|
||||
|
@ -141,7 +145,7 @@ endif
|
|||
|
||||
codeclean:
|
||||
rm -f $(APPELF) $(APPROM) $(APPBIN) $(ULTRAOBJECTS) $(BUILD_DIR)/ge007.$(COUNTRYCODE).map \
|
||||
$(HEADEROBJECTS) $(BOOTOBJECTS) $(CODEOBJECTS) $(GAMEOBJECTS) $(RZOBJECTS)
|
||||
$(HEADEROBJECTS) $(BOOTOBJECTS) $(CODEOBJECTS) $(GAMEOBJECTS) $(RZOBJECTS) $(RSPOBJECTS)
|
||||
|
||||
dataclean:
|
||||
rm -f $(APPELF) $(APPROM) $(APPBIN) $(ULTRAOBJECTS) $(BUILD_DIR)/ge007.$(COUNTRYCODE).map \
|
||||
|
@ -150,7 +154,10 @@ dataclean:
|
|||
clean:
|
||||
rm -f $(APPELF) $(APPROM) $(APPBIN) $(ULTRAOBJECTS) $(BUILD_DIR)/ge007.$(COUNTRYCODE).map \
|
||||
$(HEADEROBJECTS) $(BOOTOBJECTS) $(CODEOBJECTS) $(GAMEOBJECTS) $(RZOBJECTS) \
|
||||
$(OBSEG_OBJECTS) $(OBSEG_RZ) $(ROMOBJECTS) $(RAMROM_OBJECTS) $(FONT_OBJECTS) $(MUSIC_OBJECTS) $(IMAGE_OBJS) $(MUSIC_RZ_FILES)
|
||||
$(OBSEG_OBJECTS) $(OBSEG_RZ) $(ROMOBJECTS) $(RAMROM_OBJECTS) $(FONT_OBJECTS) $(MUSIC_OBJECTS) $(IMAGE_OBJS) $(MUSIC_RZ_FILES) $(RSPOBJECTS)
|
||||
|
||||
$(BUILD_DIR)/rsp/%.bin: rsp/*.s
|
||||
$(ARMIPS) -sym $@.sym -strequ CODE_FILE $(BUILD_DIR)/rsp/$*.bin -strequ DATA_FILE $(BUILD_DIR)/rsp/$*_data.bin $<
|
||||
|
||||
$(BUILD_DIR)/%.o: src/%.s
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
@ -165,6 +172,8 @@ $(BUILD_DIR)/assets/%.o: assets/%.c
|
|||
$(BUILD_DIR)/assets/%.o: assets/%.s
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
$(BUILD_DIR)/src/rspboot.o: $(BUILD_DIR)/rsp/rspboot.bin
|
||||
|
||||
$(BUILD_DIR)/assets/ramrom/%.o: assets/ramrom/%.s
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
|
@ -188,7 +197,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) $(GLOBALIMAGETABLEOBJECTS) $(ROMOBJECTS2) $(RAMROM_OBJECTS) $(FONT_OBJECTS) $(MUSIC_OBJECTS) $(OBSEG_OBJECTS)
|
||||
$(APPELF): $(RSPOBJECTS) $(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)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "ultra64.h"
|
||||
#include "bondconstants.h"
|
||||
#include "bondtypes.h"
|
||||
#include <gbi.h>
|
||||
|
||||
struct sGlobalImageTable GlobalImageTable = {
|
||||
{ //globalDL_0x000
|
||||
|
@ -400,294 +401,294 @@ struct sGlobalImageTable GlobalImageTable = {
|
|||
},
|
||||
|
||||
{ //s_genericimage
|
||||
{0x858, 0x36, 0x36, 3, F_IA, D_8BIT, MIRROR, MIRROR, 0}
|
||||
{0x858, 0x36, 0x36, 3, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 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}
|
||||
{0x878, 0x30, 0x30, 6, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x879, 0x40, 0x20, 7, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x87A, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xCE, 0x40, 0x20, 7, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x878, 0x30, 0x30, 6, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x878, 0x30, 0x30, 6, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x878, 0x30, 0x30, 6, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x87B, 0x20, 0x20, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x87C, 0x20, 0x20, 0, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x5C3, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x87D, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x5C4, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x87E, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x87F, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x5C6, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x5C7, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x87A, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x878, 0x30, 0x30, 6, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x878, 0x30, 0x30, 6, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x878, 0x30, 0x30, 6, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 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}
|
||||
{0x880, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x881, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x882, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x883, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x884, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x885, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 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}
|
||||
{0x886, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x887, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x888, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x889, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x88A, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0}
|
||||
},
|
||||
|
||||
{ //s_flareimage1
|
||||
{0x8B5, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0}
|
||||
{0x8B5, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0}
|
||||
},
|
||||
|
||||
{ //s_flareimage2
|
||||
{0x8B6, 0x40, 0x40, 0, F_IA, D_8BIT, 0, 0, 0}
|
||||
{0x8B6, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0}
|
||||
},
|
||||
|
||||
{ //s_flareimage3
|
||||
{0x850, 0x10, 0x20, 6, F_RGBA, D_32BIT, 0, 0, 0}
|
||||
{0x850, 0x10, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_WRAP, G_TX_WRAP, 0}
|
||||
},
|
||||
|
||||
{ //s_flareimage4
|
||||
{0x857, 0x10, 0x20, 6, F_RGBA, D_32BIT, 0, 0, 0}
|
||||
{0x857, 0x10, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_WRAP, G_TX_WRAP, 0}
|
||||
},
|
||||
|
||||
{ //s_flareimage5
|
||||
{0x856, 0x20, 0x20, 0, F_RGBA, D_32BIT, 0, 0, 0}
|
||||
{0x856, 0x20, 0x20, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_WRAP, G_TX_WRAP, 0}
|
||||
},
|
||||
|
||||
{ //s_ammo9mmimage
|
||||
{0x8B7, 5, 0xC, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0}
|
||||
{0x8B7, 5, 0xC, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_CLAMP, G_TX_CLAMP, 0}
|
||||
},
|
||||
|
||||
{ //s_rifleammoimage
|
||||
{0x8B8, 5, 0x1C, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0}
|
||||
{0x8B8, 5, 0x1C, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_CLAMP, G_TX_CLAMP, 0}
|
||||
},
|
||||
|
||||
{ //s_shotgunammoimage
|
||||
{0x877, 6, 0x14, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0}
|
||||
{0x877, 6, 0x14, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_CLAMP, G_TX_CLAMP, 0}
|
||||
},
|
||||
|
||||
{ //s_knifeammoimage
|
||||
{0x876, 6, 0x18, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0}
|
||||
{0x876, 6, 0x18, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_CLAMP, G_TX_CLAMP, 0}
|
||||
},
|
||||
|
||||
{ //s_glammoimage
|
||||
{0x875, 8, 0x15, 0, F_RGBA, D_32BIT, 0, MIRROR, 0}
|
||||
{0x875, 8, 0x15, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_WRAP, G_TX_CLAMP, 0}
|
||||
},
|
||||
|
||||
{ //s_rocketammoimage
|
||||
{0x871, 7, 0x16, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0}
|
||||
{0x871, 7, 0x16, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_CLAMP, G_TX_CLAMP, 0}
|
||||
},
|
||||
|
||||
{ //s_genericmineammoimage
|
||||
{0x872, 0xE, 0xE, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0}
|
||||
{0x872, 0xE, 0xE, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_CLAMP, G_TX_CLAMP, 0}
|
||||
},
|
||||
|
||||
{ //s_grenadeammoimage
|
||||
{0x873, 0xE, 0x12, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0}
|
||||
{0x873, 0xE, 0x12, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_CLAMP, G_TX_CLAMP, 0}
|
||||
},
|
||||
|
||||
{ //s_magnumammoimage
|
||||
{0x874, 5, 0xF, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0}
|
||||
{0x874, 5, 0xF, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_CLAMP, G_TX_CLAMP, 0}
|
||||
},
|
||||
|
||||
{ //s_goldengunammoimage
|
||||
{0x8B9, 5, 0xC, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0}
|
||||
{0x8B9, 5, 0xC, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_CLAMP, G_TX_CLAMP, 0}
|
||||
},
|
||||
|
||||
{ //s_remotemineammoimage
|
||||
{0x8BA, 0xE, 0xE, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0}
|
||||
{0x8BA, 0xE, 0xE, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_CLAMP, G_TX_CLAMP, 0}
|
||||
},
|
||||
|
||||
{ //s_timedmineammoimage
|
||||
{0x8BE, 0xE, 0xE, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0}
|
||||
{0x8BE, 0xE, 0xE, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_CLAMP, G_TX_CLAMP, 0}
|
||||
},
|
||||
|
||||
{ //s_proxmineammoimage
|
||||
{0x8BB, 0xE, 0xE, 0, F_RGBA, D_32BIT, MIRROR, MIRROR, 0}
|
||||
{0x8BB, 0xE, 0xE, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_CLAMP, G_TX_CLAMP, 0}
|
||||
},
|
||||
|
||||
{ //s_tankammoimage
|
||||
{0x9A0, 7, 0x16, 0, F_IA, D_8BIT, MIRROR, MIRROR, 0}
|
||||
{0x9A0, 7, 0x16, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0}
|
||||
},
|
||||
|
||||
{ //s_crosshairimage
|
||||
{0x8BC, 0x20, 0x20, 0, F_RGBA, D_32BIT, 0, 0, 0}
|
||||
{0x8BC, 0x20, 0x20, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_WRAP, G_TX_WRAP, 0}
|
||||
},
|
||||
|
||||
{ //s_betacrosshairimage
|
||||
{0x8BD, 0x20, 0x20, 0, F_RGBA, D_32BIT, 0, 0, 0}
|
||||
{0x8BD, 0x20, 0x20, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_WRAP, G_TX_WRAP, 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}
|
||||
{0x292, 0x20, 1, 6, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x28E, 0x36, 0x36, 3, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 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}
|
||||
{0x88B, 0x20, 0x20, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x88C, 0x80, 0x10, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x88D, 0x80, 0x10, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x88E, 0x80, 0x10, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x88F, 0x80, 0x10, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x890, 0x80, 0x10, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x891, 0x80, 0x10, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x892, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x893, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x894, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x895, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x4A1, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x896, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x897, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x4A2, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x4A3, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x898, 0x10, 0x10, 5, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x246, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x247, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x248, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x899, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x89A, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x89B, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x89C, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x245, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x89D, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x89E, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8B3, 0x40, 0x40, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8AF, 0x20, 0x20, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8B0, 0x20, 0x20, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8B1, 0x20, 0x20, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8B2, 0x20, 0x20, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8AB, 0x20, 0x20, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8AC, 0x20, 0x20, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8AD, 0x20, 0x20, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8AE, 0x20, 0x20, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8AA, 0x20, 0x20, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x89F, 0x20, 0x20, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8A0, 0x20, 0x20, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8A1, 0x20, 0x20, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8A2, 0x20, 0x20, 6, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8A3, 0x20, 0x20, 6, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8A4, 0x20, 0x20, 6, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8A5, 0x20, 0x20, 6, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8A6, 0x80, 0x30, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_CLAMP, 0},
|
||||
{0x8A7, 0x10, 0x10, 5, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8A8, 0x10, 0x10, 5, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8A9, 0x10, 0x10, 5, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x8D7, 0x36, 0x36, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0x345, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 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}
|
||||
{0x8B4, 0x40, 0x40, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x5E4, 0x40, 0x40, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0},
|
||||
{0x5E5, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 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}
|
||||
{0, 0x20, 0x1C, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_WRAP, G_TX_CLAMP, 0},
|
||||
{2, 0x20, 0x1C, 0, G_IM_FMT_RGBA, G_IM_SIZ_32b, G_TX_WRAP, G_TX_CLAMP, 0},
|
||||
{3, 0x7A, 0x12, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{1, 0xF, 0xF, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{4, 0x14, 0x14, 0, G_IM_FMT_IA, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA47, 0x10, 0x10, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_WRAP, G_TX_WRAP, 0}
|
||||
},
|
||||
|
||||
{ //s_mpradarimages
|
||||
{0xC8, 0x20, 0x20, 6, F_RGBA, D_16BIT, 0, 0, 0}
|
||||
{0xC8, 0x20, 0x20, 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, G_TX_WRAP, G_TX_WRAP, 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}
|
||||
{0xA2A, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA2B, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA2C, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA2D, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA32, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA33, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA34, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA35, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA36, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA37, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA38, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA39, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA2E, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA2F, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA30, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA31, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA48, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA49, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA4A, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA4B, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA4C, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA4D, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA4E, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA4F, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA50, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA51, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA52, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA53, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA54, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA55, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA56, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA57, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA58, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA59, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA5A, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA5B, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA5C, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA5D, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA5E, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA5F, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA60, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA61, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA62, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA63, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA64, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA65, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA66, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA67, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA68, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA69, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA6A, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA6B, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA6C, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA6D, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA6E, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA6F, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA7A, 0x41, 0x43, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA7B, 0x41, 0x43, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA7C, 0x41, 0x43, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA7D, 0x41, 0x43, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA86, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA85, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA83, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA84, 0x41, 0x41, 7, G_IM_FMT_I, G_IM_SIZ_4b, G_TX_CLAMP, G_TX_CLAMP, 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}
|
||||
{0xA20, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA16, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA12, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA19, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA14, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA1E, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA1B, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA24, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA17, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA15, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA18, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA1A, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA7E, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA7F, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA80, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA81, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0},
|
||||
{0xA87, 0x44, 0x2C, 0, G_IM_FMT_I, G_IM_SIZ_8b, G_TX_CLAMP, G_TX_CLAMP, 0}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -0,0 +1,753 @@
|
|||
//TODO: Autogenerate me
|
||||
struct fileentry file_resource_table[] = {
|
||||
{0, "", 0},
|
||||
{1, "bg/bg_sev_all_p.seg", &bg_sev_all_p_seg},
|
||||
{2, "bg/bg_silo_all_p.seg", &bg_silo_all_p_seg},
|
||||
{3, "bg/bg_stat_all_p.seg", &bg_stat_all_p_seg},
|
||||
{4, "bg/bg_arec_all_p.seg", &bg_arec_all_p_seg},
|
||||
{5, "bg/bg_arch_all_p.seg", &bg_arch_all_p_seg},
|
||||
{6, "bg/bg_tra_all_p.seg", &bg_tra_all_p_seg},
|
||||
{7, "bg/bg_dest_all_p.seg", &bg_dest_all_p_seg},
|
||||
{8, "bg/bg_sevb_all_p.seg", &bg_sevb_all_p_seg},
|
||||
{9, "bg/bg_azt_all_p.seg", &bg_azt_all_p_seg},
|
||||
{0xA, "bg/bg_pete_all_p.seg", &bg_pete_all_p_seg},
|
||||
{0xB, "bg/bg_depo_all_p.seg", &bg_depo_all_p_seg},
|
||||
{0xC, "bg/bg_ref_all_p.seg", &bg_ref_all_p_seg},
|
||||
{0xD, "bg/bg_cryp_all_p.seg", &bg_cryp_all_p_seg},
|
||||
{0xE, "bg/bg_dam_all_p.seg", &bg_dam_all_p_seg},
|
||||
{0xF, "bg/bg_ark_all_p.seg", &bg_ark_all_p_seg},
|
||||
{0x10, "bg/bg_run_all_p.seg", &bg_run_all_p_seg},
|
||||
{0x11, "bg/bg_sevx_all_p.seg", &bg_sevx_all_p_seg},
|
||||
{0x12, "bg/bg_jun_all_p.seg", &bg_jun_all_p_seg},
|
||||
{0x13, "bg/bg_dish_all_p.seg", &bg_dish_all_p_seg},
|
||||
{0x14, "bg/bg_cave_all_p.seg", &bg_cave_all_p_seg},
|
||||
{0x15, "bg/bg_cat_all_p.seg", &bg_cat_all_p_seg},
|
||||
{0x16, "bg/bg_crad_all_p.seg", &bg_crad_all_p_seg},
|
||||
{0x17, "bg/bg_sho_all_p.seg", &bg_sho_all_p_seg},
|
||||
{0x18, "bg/bg_eld_all_p.seg", &bg_imp_all_p_seg},
|
||||
{0x19, "bg/bg_imp_all_p.seg", &bg_imp_all_p_seg},
|
||||
{0x1A, "bg/bg_ash_all_p.seg", &bg_imp_all_p_seg},
|
||||
{0x1B, "bg/bg_lue_all_p.seg", &bg_imp_all_p_seg},
|
||||
{0x1C, "bg/bg_ame_all_p.seg", &bg_imp_all_p_seg},
|
||||
{0x1D, "bg/bg_rit_all_p.seg", &bg_rit_all_p_seg},
|
||||
{0x1E, "bg/bg_oat_all_p.seg", &bg_oat_all_p_seg},
|
||||
{0x1F, "bg/bg_ear_all_p.seg", &bg_ear_all_p_seg},
|
||||
{0x20, "bg/bg_lee_all_p.seg", &bg_lee_all_p_seg},
|
||||
{0x21, "bg/bg_lip_all_p.seg", &bg_lip_all_p_seg},
|
||||
{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},
|
||||
{0x28, "CbluemanZ", &CbluemanZ},
|
||||
{0x29, "CbluewomanZ", &CbluewomanZ},
|
||||
{0x2A, "CboilerbondZ", &CboilerbondZ},
|
||||
{0x2B, "CboilertrevZ", &CboilertrevZ},
|
||||
{0x2C, "CborisZ", &CborisZ},
|
||||
{0x2D, "CcamguardZ", &CcamguardZ},
|
||||
{0x2E, "CcardimanZ", &CcardimanZ},
|
||||
{0x2F, "CcheckmanZ", &CcheckmanZ},
|
||||
{0x30, "CcommguardZ", &CcommguardZ},
|
||||
{0x31, "CdjbondZ", &CdjbondZ},
|
||||
{0x32, "CfattechwomanZ", &CfattechwomanZ},
|
||||
{0x33, "Cgreatguard2Z", &Cgreatguard2Z},
|
||||
{0x34, "CgreatguardZ", &CgreatguardZ},
|
||||
{0x35, "CgreyguardZ", &CgreyguardZ},
|
||||
{0x36, "CgreymanZ", &CgreymanZ},
|
||||
{0x37, "CheadalanZ", &CheadalanZ},
|
||||
{0x38, "CheadbZ", &CheadbZ},
|
||||
{0x39, "CheadbalaclavaZ", &CheadbalaclavaZ},
|
||||
{0x3A, "CheadbikeZ", &CheadbikeZ},
|
||||
{0x3B, "CheadbrosnanZ", &CheadbrosnanZ},
|
||||
{0x3C, "CheadbrosnanboilerZ", &CheadbrosnanboilerZ},
|
||||
{0x3D, "CheadbrosnansnowZ", &CheadbrosnansnowZ},
|
||||
{0x3E, "CheadbrosnansuitZ", &CheadbrosnansuitZ},
|
||||
{0x3F, "CheadbrosnantimberZ", &CheadbrosnantimberZ},
|
||||
{0x40, "CheadchrisZ", &CheadchrisZ},
|
||||
{0x41, "CheaddaveZ", &CheaddaveZ},
|
||||
{0x42, "CheaddesZ", &CheaddesZ},
|
||||
{0x43, "CheadduncanZ", &CheadduncanZ},
|
||||
{0x44, "CheaddwayneZ", &CheaddwayneZ},
|
||||
{0x45, "CheadgrahamZ", &CheadgrahamZ},
|
||||
{0x46, "CheadgrantZ", &CheadgrantZ},
|
||||
{0x47, "CheadjimZ", &CheadjimZ},
|
||||
{0x48, "Cheadjoe2Z", &Cheadjoe2Z},
|
||||
{0x49, "CheadjoeZ", &CheadjoeZ},
|
||||
{0x4A, "CheadjoelZ", &CheadjoelZ},
|
||||
{0x4B, "CheadkarlZ", &CheadkarlZ},
|
||||
{0x4C, "CheadkenZ", &CheadkenZ},
|
||||
{0x4D, "CheadleeZ", &CheadleeZ},
|
||||
{0x4E, "CheadmandyZ", &CheadmandyZ},
|
||||
{0x4F, "CheadmarionZ", &CheadmarionZ},
|
||||
{0x50, "CheadmarkZ", &CheadmarkZ},
|
||||
{0x51, "CheadmartinZ", &CheadmartinZ},
|
||||
{0x52, "CheadmishkinZ", &CheadmishkinZ},
|
||||
{0x53, "CheadneilZ", &CheadneilZ},
|
||||
{0x54, "CheadpeteZ", &CheadpeteZ},
|
||||
{0x55, "CheadrobinZ", &CheadrobinZ},
|
||||
{0x56, "CheadsallyZ", &CheadsallyZ},
|
||||
{0x57, "CheadscottZ", &CheadscottZ},
|
||||
{0x58, "CheadshaunZ", &CheadshaunZ},
|
||||
{0x59, "CheadsteveeZ", &CheadsteveeZ},
|
||||
{0x5A, "CheadstevehZ", &CheadstevehZ},
|
||||
{0x5B, "CheadvivienZ", &CheadvivienZ},
|
||||
{0x5C, "CjawsZ", &CjawsZ},
|
||||
{0x5D, "CjeanwomanZ", &CjeanwomanZ},
|
||||
{0x5E, "CmaydayZ", &CmaydayZ},
|
||||
{0x5F, "CmoonfemaleZ", &CmoonfemaleZ},
|
||||
{0x60, "CmoonguardZ", &CmoonguardZ},
|
||||
{0x61, "CnatalyaZ", &CnatalyaZ},
|
||||
{0x62, "CnavyguardZ", &CnavyguardZ},
|
||||
{0x63, "CoddjobZ", &CoddjobZ},
|
||||
{0x64, "ColiveguardZ", &ColiveguardZ},
|
||||
{0x65, "CorumovZ", &CorumovZ},
|
||||
{0x66, "CpilotZ", &CpilotZ},
|
||||
{0x67, "CredmanZ", &CredmanZ},
|
||||
{0x68, "CrusguardZ", &CrusguardZ},
|
||||
{0x69, "CsnowbondZ", &CsnowbondZ},
|
||||
{0x6A, "CsnowguardZ", &CsnowguardZ},
|
||||
{0x6B, "CspicebondZ", &CspicebondZ},
|
||||
{0x6C, "Csuit_lf_handZ", &Csuit_lf_handZ},
|
||||
{0x6D, "CsuitbondZ", &CsuitbondZ},
|
||||
{0x6E, "CtechmanZ", &CtechmanZ},
|
||||
{0x6F, "CtechwomanZ", &CtechwomanZ},
|
||||
{0x70, "CtimberbondZ", &CtimberbondZ},
|
||||
{0x71, "CtrevelyanZ", &CtrevelyanZ},
|
||||
{0x72, "CtrevguardZ", &CtrevguardZ},
|
||||
{0x73, "CvalentinZ", &CvalentinZ},
|
||||
{0x74, "CxeniaZ", &CxeniaZ},
|
||||
|
||||
{0x75, "Gak47Z", &Gak47Z},
|
||||
{0x76, "GaudiotapeZ", &GaudiotapeZ},
|
||||
{0x77, "GautoshotZ", &GautoshotZ},
|
||||
{0x78, "GblackboxZ", &GblackboxZ},
|
||||
{0x79, "GblueprintsZ", &GblueprintsZ},
|
||||
{0x7A, "GbombcaseZ", &GbombcaseZ},
|
||||
{0x7B, "GbombdefuserZ", &GbombdefuserZ},
|
||||
{0x7C, "GbriefcaseZ", &GbriefcaseZ},
|
||||
{0x7D, "GbugZ", &GbugZ},
|
||||
{0x7E, "GbugdetectorZ", &GbugdetectorZ},
|
||||
{0x7F, "GbungeeZ", &GbungeeZ},
|
||||
{0x80, "GcameraZ", &GcameraZ},
|
||||
{0x81, "GcartblueZ", &GcartblueZ},
|
||||
{0x82, "GcartridgeZ", &GcartridgeZ},
|
||||
{0x83, "GcartrifleZ", &GcartrifleZ},
|
||||
{0x84, "GcartshellZ", &GcartshellZ},
|
||||
{0x85, "GcircuitboardZ", &GcircuitboardZ},
|
||||
{0x86, "GclipboardZ", &GclipboardZ},
|
||||
{0x87, "GcreditcardZ", &GcreditcardZ},
|
||||
{0x88, "GdarkglassesZ", &GdarkglassesZ},
|
||||
{0x89, "GdatathiefZ", &GdatathiefZ},
|
||||
{0x8A, "GdattapeZ", &GdattapeZ},
|
||||
{0x8B, "GdoordecoderZ", &GdoordecoderZ},
|
||||
{0x8C, "GdoorexploderZ", &GdoorexploderZ},
|
||||
{0x8D, "GdossierredZ", &GdossierredZ},
|
||||
{0x8E, "GdynamiteZ", &GdynamiteZ},
|
||||
{0x8F, "GexplosivefloppyZ", &GexplosivefloppyZ},
|
||||
{0x90, "GexplosivepenZ", &GexplosivepenZ},
|
||||
{0x91, "GextinguisherZ", &GextinguisherZ},
|
||||
{0x92, "GfingergunZ", &GfingergunZ},
|
||||
{0x93, "GfistZ", &GfistZ},
|
||||
{0x94, "GflarepistolZ", &GflarepistolZ},
|
||||
{0x95, "Gfnp90Z", &Gfnp90Z},
|
||||
{0x96, "GgaskeyringZ", &GgaskeyringZ},
|
||||
{0x97, "GgoldbarZ", &GgoldbarZ},
|
||||
{0x98, "GgoldeneyekeyZ", &GgoldeneyekeyZ},
|
||||
{0x99, "GgoldengunZ", &GgoldengunZ},
|
||||
{0x9A, "GgoldwppkZ", &GgoldwppkZ},
|
||||
{0x9B, "GgrenadeZ", &GgrenadeZ},
|
||||
{0x9C, "GgrenadelaunchZ", &GgrenadelaunchZ},
|
||||
{0x9D, "GheroinZ", &GheroinZ},
|
||||
{0x9E, "GjoypadZ", &GjoypadZ},
|
||||
{0x9F, "GkeyanalysercaseZ", &GkeyanalysercaseZ},
|
||||
{0xA0, "GkeyboltZ", &GkeyboltZ},
|
||||
{0xA1, "GkeycardZ", &GkeycardZ},
|
||||
{0xA2, "GkeyyaleZ", &GkeyyaleZ},
|
||||
{0xA3, "GknifeZ", &GknifeZ},
|
||||
{0xA4, "GlaserZ", &GlaserZ},
|
||||
{0xA5, "GlectreZ", &GlectreZ},
|
||||
{0xA6, "GlockexploderZ", &GlockexploderZ},
|
||||
{0xA7, "Gm16Z", &Gm16Z},
|
||||
{0xA8, "GmapZ", &GmapZ},
|
||||
{0xA9, "GmicrocameraZ", &GmicrocameraZ},
|
||||
{0xAA, "GmicrocodeZ", &GmicrocodeZ},
|
||||
{0xAB, "GmicrofilmZ", &GmicrofilmZ},
|
||||
{0xAC, "GmoneyZ", &GmoneyZ},
|
||||
{0xAD, "Gmp5kZ", &Gmp5kZ},
|
||||
{0xAE, "Gmp5ksilZ", &Gmp5ksilZ},
|
||||
{0xAF, "GpitongunZ", &GpitongunZ},
|
||||
{0xB0, "GplansZ", &GplansZ},
|
||||
{0xB1, "GplastiqueZ", &GplastiqueZ},
|
||||
{0xB2, "GpolarizedglassesZ", &GpolarizedglassesZ},
|
||||
{0xB3, "GproximitymineZ", &GproximitymineZ},
|
||||
{0xB4, "GremotemineZ", &GremotemineZ},
|
||||
{0xB5, "GrocketlaunchZ", &GrocketlaunchZ},
|
||||
{0xB6, "GrugerZ", &GrugerZ},
|
||||
{0xB7, "GsafecrackercaseZ", &GsafecrackercaseZ},
|
||||
{0xB8, "GshotgunZ", &GshotgunZ},
|
||||
{0xB9, "GsilverwppkZ", &GsilverwppkZ},
|
||||
{0xBA, "GskorpionZ", &GskorpionZ},
|
||||
{0xBB, "GsniperrifleZ", &GsniperrifleZ},
|
||||
{0xBC, "GspectreZ", &GspectreZ},
|
||||
{0xBD, "GspooltapeZ", &GspooltapeZ},
|
||||
{0xBE, "GspyfileZ", &GspyfileZ},
|
||||
{0xBF, "GstafflistZ", &GstafflistZ},
|
||||
{0xC0, "GtaserZ", &GtaserZ},
|
||||
{0xC1, "GthrowknifeZ", &GthrowknifeZ},
|
||||
{0xC2, "GtimedmineZ", &GtimedmineZ},
|
||||
{0xC3, "GtriggerZ", &GtriggerZ},
|
||||
{0xC4, "Gtt33Z", &Gtt33Z},
|
||||
{0xC5, "GuziZ", &GuziZ},
|
||||
{0xC6, "GvideotapeZ", &GvideotapeZ},
|
||||
{0xC7, "GwatchcommunicatorZ", &GwatchcommunicatorZ},
|
||||
{0xC8, "GwatchgeigercounterZ", &GwatchgeigercounterZ},
|
||||
{0xC9, "GwatchidentifierZ", &GwatchidentifierZ},
|
||||
{0xCA, "GwatchlaserZ", &GwatchlaserZ},
|
||||
{0xCB, "GwatchmagnetattractZ", &GwatchmagnetattractZ},
|
||||
{0xCC, "GwatchmagnetrepelZ", &GwatchmagnetrepelZ},
|
||||
{0xCD, "GweaponcaseZ", &GweaponcaseZ},
|
||||
{0xCE, "GwppkZ", &GwppkZ},
|
||||
{0xCF, "GwppksilZ", &GwppksilZ},
|
||||
{0xD0, "GwristdartZ", &GwristdartZ},
|
||||
|
||||
{0xD1, "PICBMZ", &PICBMZ},
|
||||
{0xD2, "PICBM_noseZ", &PICBM_noseZ},
|
||||
{0xD3, "Pak47magZ", &Pak47magZ},
|
||||
{0xD4, "Palarm1Z", &Palarm1Z},
|
||||
{0xD5, "Palarm2Z", &Palarm2Z},
|
||||
{0xD6, "Pammo_crate1Z", &Pammo_crate1Z},
|
||||
{0xD7, "Pammo_crate2Z", &Pammo_crate2Z},
|
||||
{0xD8, "Pammo_crate3Z", &Pammo_crate3Z},
|
||||
{0xD9, "Pammo_crate4Z", &Pammo_crate4Z},
|
||||
{0xDA, "Pammo_crate5Z", &Pammo_crate5Z},
|
||||
{0xDB, "PapcZ", &PapcZ},
|
||||
{0xDC, "Parchsecdoor1Z", &Parchsecdoor1Z},
|
||||
{0xDD, "Parchsecdoor2Z", &Parchsecdoor2Z},
|
||||
{0xDE, "ParticZ", &ParticZ},
|
||||
{0xDF, "PartictrailerZ", &PartictrailerZ},
|
||||
{0xE0, "PbarricadeZ", &PbarricadeZ},
|
||||
{0xE1, "Pbin1Z", &Pbin1Z},
|
||||
{0xE2, "Pblotter1Z", &Pblotter1Z},
|
||||
{0xE3, "PbodyarmourZ", &PbodyarmourZ},
|
||||
{0xE4, "PbodyarmourvestZ", &PbodyarmourvestZ},
|
||||
{0xE5, "PbollardZ", &PbollardZ},
|
||||
{0xE6, "PbombZ", &PbombZ},
|
||||
{0xE7, "Pbook1Z", &Pbook1Z},
|
||||
{0xE8, "Pbookshelf1Z", &Pbookshelf1Z},
|
||||
{0xE9, "Pborg_crateZ", &Pborg_crateZ},
|
||||
{0xEA, "PboxcartridgesZ", &PboxcartridgesZ},
|
||||
{0xEB, "Pboxes2x4Z", &Pboxes2x4Z},
|
||||
{0xEC, "Pboxes3x4Z", &Pboxes3x4Z},
|
||||
{0xED, "Pboxes4x4Z", &Pboxes4x4Z},
|
||||
{0xEE, "PbrakeunitZ", &PbrakeunitZ},
|
||||
{0xEF, "Pbridge_console1aZ", &Pbridge_console1aZ},
|
||||
{0xF0, "Pbridge_console1bZ", &Pbridge_console1bZ},
|
||||
{0xF1, "Pbridge_console2aZ", &Pbridge_console2aZ},
|
||||
{0xF2, "Pbridge_console2bZ", &Pbridge_console2bZ},
|
||||
{0xF3, "Pbridge_console3aZ", &Pbridge_console3aZ},
|
||||
{0xF4, "Pbridge_console3bZ", &Pbridge_console3bZ},
|
||||
{0xF5, "PcarbmwZ", &PcarbmwZ},
|
||||
{0xF6, "Pcard_box1Z", &Pcard_box1Z},
|
||||
{0xF7, "Pcard_box2Z", &Pcard_box2Z},
|
||||
{0xF8, "Pcard_box3Z", &Pcard_box3Z},
|
||||
{0xF9, "Pcard_box4_lgZ", &Pcard_box4Z},
|
||||
{0xFA, "Pcard_box5_lgZ", &Pcard_box5Z},
|
||||
{0xFB, "Pcard_box6_lgZ", &Pcard_box6Z},
|
||||
{0xFC, "PcarescortZ", &PcarescortZ},
|
||||
{0xFD, "PcargolfZ", &PcargolfZ},
|
||||
{0xFE, "PcarweirdZ", &PcarweirdZ},
|
||||
{0xFF, "PcarzilZ", &PcarzilZ},
|
||||
{0x100, "PcctvZ", &PcctvZ},
|
||||
{0x101, "PchraudiotapeZ", &PchraudiotapeZ},
|
||||
{0x102, "PchrautoshotZ", &PchrautoshotZ},
|
||||
{0x103, "PchrblackboxZ", &PchrblackboxZ},
|
||||
{0x104, "PchrblueprintsZ", &PchrblueprintsZ},
|
||||
{0x105, "PchrbombcaseZ", &PchrbombcaseZ},
|
||||
{0x106, "PchrbombdefuserZ", &PchrbombdefuserZ},
|
||||
{0x107, "PchrbriefcaseZ", &PchrbriefcaseZ},
|
||||
{0x108, "PchrbugZ", &PchrbugZ},
|
||||
{0x109, "PchrbugdetectorZ", &PchrbugdetectorZ},
|
||||
{0x10A, "PchrbungeeZ", &PchrbungeeZ},
|
||||
{0x10B, "PchrcameraZ", &PchrcameraZ},
|
||||
{0x10C, "PchrcircuitboardZ", &PchrcircuitboardZ},
|
||||
{0x10D, "PchrclipboardZ", &PchrclipboardZ},
|
||||
{0x10E, "PchrcreditcardZ", &PchrcreditcardZ},
|
||||
{0x10F, "PchrdarkglassesZ", &PchrdarkglassesZ},
|
||||
{0x110, "PchrdatathiefZ", &PchrdatathiefZ},
|
||||
{0x111, "PchrdattapeZ", &PchrdattapeZ},
|
||||
{0x112, "PchrdoordecoderZ", &PchrdoordecoderZ},
|
||||
{0x113, "PchrdoorexploderZ", &PchrdoorexploderZ},
|
||||
{0x114, "PchrdossierredZ", &PchrdossierredZ},
|
||||
{0x115, "PchrdynamiteZ", &PchrdynamiteZ},
|
||||
{0x116, "PchrexplosivepenZ", &PchrexplosivepenZ},
|
||||
{0x117, "PchrextinguisherZ", &PchrextinguisherZ},
|
||||
{0x118, "PchrfingergunZ", &PchrfingergunZ},
|
||||
{0x119, "PchrflarepistolZ", &PchrflarepistolZ},
|
||||
{0x11A, "Pchrfnp90Z", &Pchrfnp90Z},
|
||||
{0x11B, "PchrgaskeyringZ", &PchrgaskeyringZ},
|
||||
{0x11C, "PchrgoldbarZ", &PchrgoldbarZ},
|
||||
{0x11D, "PchrgoldenZ", &PchrgoldenZ},
|
||||
{0x11E, "PchrgoldeneyekeyZ", &PchrgoldeneyekeyZ},
|
||||
{0x11F, "PchrgoldwppkZ", &PchrgoldwppkZ},
|
||||
{0x120, "PchrgrenadeZ", &PchrgrenadeZ},
|
||||
{0x121, "PchrgrenadelaunchZ", &PchrgrenadelaunchZ},
|
||||
{0x122, "PchrgrenaderoundZ", &PchrgrenaderoundZ},
|
||||
{0x123, "PchrheroinZ", &PchrheroinZ},
|
||||
{0x124, "PchrkalashZ", &PchrkalashZ},
|
||||
{0x125, "PchrkeyanalysercaseZ", &PchrkeyanalysercaseZ},
|
||||
{0x126, "PchrkeyboltZ", &PchrkeyboltZ},
|
||||
{0x127, "PchrkeyyaleZ", &PchrkeyyaleZ},
|
||||
{0x128, "PchrknifeZ", &PchrknifeZ},
|
||||
{0x129, "PchrlaserZ", &PchrlaserZ},
|
||||
{0x12A, "PchrlectreZ", &PchrlectreZ},
|
||||
{0x12B, "PchrlockexploderZ", &PchrlockexploderZ},
|
||||
{0x12C, "Pchrm16Z", &Pchrm16Z},
|
||||
{0x12D, "PchrmapZ", &PchrmapZ},
|
||||
{0x12E, "PchrmicrocameraZ", &PchrmicrocameraZ},
|
||||
{0x12F, "PchrmicrocodeZ", &PchrmicrocodeZ},
|
||||
{0x130, "PchrmicrofilmZ", &PchrmicrofilmZ},
|
||||
{0x131, "PchrmoneyZ", &PchrmoneyZ},
|
||||
{0x132, "Pchrmp5kZ", &Pchrmp5kZ},
|
||||
{0x133, "Pchrmp5ksilZ", &Pchrmp5ksilZ},
|
||||
{0x134, "PchrpitongunZ", &PchrpitongunZ},
|
||||
{0x135, "PchrplansZ", &PchrplansZ},
|
||||
{0x136, "PchrplastiqueZ", &PchrplastiqueZ},
|
||||
{0x137, "PchrpolarizedglassesZ", &PchrpolarizedglassesZ},
|
||||
{0x138, "PchrproximitymineZ", &PchrproximitymineZ},
|
||||
{0x139, "PchrremotemineZ", &PchrremotemineZ},
|
||||
{0x13A, "PchrrocketZ", &PchrrocketZ},
|
||||
{0x13B, "PchrrocketlaunchZ", &PchrrocketlaunchZ},
|
||||
{0x13C, "PchrrugerZ", &PchrrugerZ},
|
||||
{0x13D, "PchrsafecrackercaseZ", &PchrsafecrackercaseZ},
|
||||
{0x13E, "PchrshotgunZ", &PchrshotgunZ},
|
||||
{0x13F, "PchrsilverwppkZ", &PchrsilverwppkZ},
|
||||
{0x140, "PchrskorpionZ", &PchrskorpionZ},
|
||||
{0x141, "PchrsniperrifleZ", &PchrsniperrifleZ},
|
||||
{0x142, "PchrspectreZ", &PchrspectreZ},
|
||||
{0x143, "PchrspooltapeZ", &PchrspooltapeZ},
|
||||
{0x144, "PchrspyfileZ", &PchrspyfileZ},
|
||||
{0x145, "PchrstafflistZ", &PchrstafflistZ},
|
||||
{0x146, "PchrtesttubeZ", &PchrtesttubeZ},
|
||||
{0x147, "PchrthrowknifeZ", &PchrthrowknifeZ},
|
||||
{0x148, "PchrtimedmineZ", &PchrtimedmineZ},
|
||||
{0x149, "Pchrtt33Z", &Pchrtt33Z},
|
||||
{0x14A, "PchruziZ", &PchruziZ},
|
||||
{0x14B, "PchrvideotapeZ", &PchrvideotapeZ},
|
||||
{0x14C, "PchrweaponcaseZ", &PchrweaponcaseZ},
|
||||
{0x14D, "PchrwppkZ", &PchrwppkZ},
|
||||
{0x14E, "PchrwppksilZ", &PchrwppksilZ},
|
||||
{0x14F, "PchrwristdartZ", &PchrwristdartZ},
|
||||
{0x150, "Pconsole1Z", &Pconsole1Z},
|
||||
{0x151, "Pconsole2Z", &Pconsole2Z},
|
||||
{0x152, "Pconsole3Z", &Pconsole3Z},
|
||||
{0x153, "Pconsole_sev2aZ", &Pconsole_sev2aZ},
|
||||
{0x154, "Pconsole_sev2bZ", &Pconsole_sev2bZ},
|
||||
{0x155, "Pconsole_sev2cZ", &Pconsole_sev2cZ},
|
||||
{0x156, "Pconsole_sev2dZ", &Pconsole_sev2dZ},
|
||||
{0x157, "Pconsole_sev_GEaZ", &Pconsole_sev_GEaZ},
|
||||
{0x158, "Pconsole_sev_GEbZ", &Pconsole_sev_GEbZ},
|
||||
{0x159, "Pconsole_sevaZ", &Pconsole_sevaZ},
|
||||
{0x15A, "Pconsole_sevbZ", &Pconsole_sevbZ},
|
||||
{0x15B, "Pconsole_sevcZ", &Pconsole_sevcZ},
|
||||
{0x15C, "Pconsole_sevdZ", &Pconsole_sevdZ},
|
||||
{0x15D, "Pcryptdoor1aZ", &Pcryptdoor1aZ},
|
||||
{0x15E, "Pcryptdoor1bZ", &Pcryptdoor1bZ},
|
||||
{0x15F, "Pcryptdoor2aZ", &Pcryptdoor2aZ},
|
||||
{0x160, "Pcryptdoor2bZ", &Pcryptdoor2bZ},
|
||||
{0x161, "Pcryptdoor3Z", &Pcryptdoor3Z},
|
||||
{0x162, "Pcryptdoor4Z", &Pcryptdoor4Z},
|
||||
{0x163, "PdamchaindoorZ", &PdamchaindoorZ},
|
||||
{0x164, "PdamgatedoorZ", &PdamgatedoorZ},
|
||||
{0x165, "PdamtundoorZ", &PdamtundoorZ},
|
||||
{0x166, "Pdepot_door_steelZ", &Pdepot_door_steelZ},
|
||||
{0x167, "Pdepot_gate_entryZ", &Pdepot_gate_entryZ},
|
||||
{0x168, "Pdesk1Z", &Pdesk1Z},
|
||||
{0x169, "Pdesk2Z", &Pdesk2Z},
|
||||
{0x16A, "Pdesk_arecibo1Z", &Pdesk_arecibo1Z},
|
||||
{0x16B, "Pdesk_lamp2Z", &Pdesk_lamp2Z},
|
||||
{0x16C, "Pdest_engineZ", &Pdest_engineZ},
|
||||
{0x16D, "Pdest_exocetZ", &Pdest_exocetZ},
|
||||
{0x16E, "Pdest_gunZ", &Pdest_gunZ},
|
||||
{0x16F, "Pdest_harpoonZ", &Pdest_harpoonZ},
|
||||
{0x170, "Pdest_seawolfZ", &Pdest_seawolfZ},
|
||||
{0x171, "Pdisc_readerZ", &Pdisc_readerZ},
|
||||
{0x172, "Pdisk_drive1Z", &Pdisk_drive1Z},
|
||||
{0x173, "Pdoor_azt_chairZ", &Pdoor_azt_chairZ},
|
||||
{0x174, "Pdoor_azt_deskZ", &Pdoor_azt_deskZ},
|
||||
{0x175, "Pdoor_azt_desk_topZ", &Pdoor_azt_desk_topZ},
|
||||
{0x176, "Pdoor_aztecZ", &Pdoor_aztecZ},
|
||||
{0x177, "Pdoor_dest1Z", &Pdoor_dest1Z},
|
||||
{0x178, "Pdoor_dest2Z", &Pdoor_dest2Z},
|
||||
{0x179, "Pdoor_eyelidZ", &Pdoor_eyelidZ},
|
||||
{0x17A, "Pdoor_irisZ", &Pdoor_irisZ},
|
||||
{0x17B, "Pdoor_mfZ", &Pdoor_mfZ},
|
||||
{0x17C, "Pdoor_roller1Z", &Pdoor_roller1Z},
|
||||
{0x17D, "Pdoor_roller2Z", &Pdoor_roller2Z},
|
||||
{0x17E, "Pdoor_roller3Z", &Pdoor_roller3Z},
|
||||
{0x17F, "Pdoor_roller4Z", &Pdoor_roller4Z},
|
||||
{0x180, "Pdoor_rollertrainZ", &Pdoor_rollertrainZ},
|
||||
{0x181, "Pdoor_st_arec1Z", &Pdoor_st_arec1Z},
|
||||
{0x182, "Pdoor_st_arec2Z", &Pdoor_st_arec2Z},
|
||||
{0x183, "Pdoor_winZ", &Pdoor_winZ},
|
||||
{0x184, "PdoorconsoleZ", &PdoorconsoleZ},
|
||||
{0x185, "PdoorpanelZ", &PdoorpanelZ},
|
||||
{0x186, "Pdoorprison1Z", &Pdoorprison1Z},
|
||||
{0x187, "PdoorstatgateZ", &PdoorstatgateZ},
|
||||
{0x188, "PexplosionbitZ", &PexplosionbitZ},
|
||||
{0x189, "Pfiling_cabinet1Z", &Pfiling_cabinet1Z},
|
||||
{0x18A, "PflagZ", &PflagZ},
|
||||
{0x18B, "PfloppyZ", &PfloppyZ},
|
||||
{0x18C, "Pfnp90magZ", &Pfnp90magZ},
|
||||
{0x18D, "Pgas_plant_met1_do1Z", &Pgas_plant_met1_do1Z},
|
||||
{0x18E, "Pgas_plant_sw2_do1Z", &Pgas_plant_sw2_do1Z},
|
||||
{0x18F, "Pgas_plant_sw3_do1Z", &Pgas_plant_sw3_do1Z},
|
||||
{0x190, "Pgas_plant_sw4_do1Z", &Pgas_plant_sw4_do1Z},
|
||||
{0x191, "Pgas_plant_sw_do1Z", &Pgas_plant_sw_do1Z},
|
||||
{0x192, "Pgas_plant_wc_cub1Z", &Pgas_plant_wc_cub1Z},
|
||||
{0x193, "PgasbarrelZ", &PgasbarrelZ},
|
||||
{0x194, "PgasbarrelsZ", &PgasbarrelsZ},
|
||||
{0x195, "Pgasplant_clear_doorZ", &Pgasplant_clear_doorZ},
|
||||
{0x196, "PgastankZ", &PgastankZ},
|
||||
{0x197, "Pglassware1Z", &Pglassware1Z},
|
||||
{0x198, "Pglassware2Z", &Pglassware2Z},
|
||||
{0x199, "Pglassware3Z", &Pglassware3Z},
|
||||
{0x19A, "Pglassware4Z", &Pglassware4Z},
|
||||
{0x19B, "PgoldeneyelogoZ", &PgoldeneyelogoZ},
|
||||
{0x19C, "PgoldenshellsZ", &PgoldenshellsZ},
|
||||
{0x19D, "PgroundgunZ", &PgroundgunZ},
|
||||
{0x19E, "Pgun_runway1Z", &Pgun_runway1Z},
|
||||
{0x19F, "PhatberetZ", &PhatberetZ},
|
||||
{0x1A0, "PhatberetblueZ", &PhatberetblueZ},
|
||||
{0x1A1, "PhatberetredZ", &PhatberetredZ},
|
||||
{0x1A2, "PhatchboltZ", &PhatchboltZ},
|
||||
{0x1A3, "PhatchdoorZ", &PhatchdoorZ},
|
||||
{0x1A4, "PhatchsevxZ", &PhatchsevxZ},
|
||||
{0x1A5, "PhatfurryZ", &PhatfurryZ},
|
||||
{0x1A6, "PhatfurryblackZ", &PhatfurryblackZ},
|
||||
{0x1A7, "PhatfurrybrownZ", &PhatfurrybrownZ},
|
||||
{0x1A8, "PhathelmetZ", &PhathelmetZ},
|
||||
{0x1A9, "PhathelmetgreyZ", &PhathelmetgreyZ},
|
||||
{0x1AA, "PhatmoonZ", &PhatmoonZ},
|
||||
{0x1AB, "PhatpeakedZ", &PhatpeakedZ},
|
||||
{0x1AC, "PhattbirdZ", &PhattbirdZ},
|
||||
{0x1AD, "PhattbirdbrownZ", &PhattbirdbrownZ},
|
||||
{0x1AE, "PhelicopterZ", &PhelicopterZ},
|
||||
{0x1AF, "PhindZ", &PhindZ},
|
||||
{0x1B0, "PjeepZ", &PjeepZ},
|
||||
{0x1B1, "Pjerry_can1Z", &Pjerry_can1Z},
|
||||
{0x1B2, "Pjungle3_treeZ", &Pjungle3_treeZ},
|
||||
{0x1B3, "Pjungle5_treeZ", &Pjungle5_treeZ},
|
||||
{0x1B4, "Pkey_holderZ", &Pkey_holderZ},
|
||||
{0x1B5, "Pkeyboard1Z", &Pkeyboard1Z},
|
||||
{0x1B6, "Pkit_units1Z", &Pkit_units1Z},
|
||||
{0x1B7, "PlabbenchZ", &PlabbenchZ},
|
||||
{0x1B8, "PlandmineZ", &PlandmineZ},
|
||||
{0x1B9, "PlegalpageZ", &PlegalpageZ},
|
||||
{0x1BA, "Pletter_tray1Z", &Pletter_tray1Z},
|
||||
{0x1BB, "Plocker3Z", &Plocker3Z},
|
||||
{0x1BC, "Plocker4Z", &Plocker4Z},
|
||||
{0x1BD, "Pm16magZ", &Pm16magZ},
|
||||
{0x1BE, "PmagnumshellsZ", &PmagnumshellsZ},
|
||||
{0x1BF, "Pmainframe1Z", &Pmainframe1Z},
|
||||
{0x1C0, "Pmainframe2Z", &Pmainframe2Z},
|
||||
{0x1C1, "Pmetal_chair1Z", &Pmetal_chair1Z},
|
||||
{0x1C2, "Pmetal_crate1Z", &Pmetal_crate1Z},
|
||||
{0x1C3, "Pmetal_crate2Z", &Pmetal_crate2Z},
|
||||
{0x1C4, "Pmetal_crate3Z", &Pmetal_crate3Z},
|
||||
{0x1C5, "Pmetal_crate4Z", &Pmetal_crate4Z},
|
||||
{0x1C6, "PmilcopterZ", &PmilcopterZ},
|
||||
{0x1C7, "PmiltruckZ", &PmiltruckZ},
|
||||
{0x1C8, "Pmissile_rack2Z", &Pmissile_rack2Z},
|
||||
{0x1C9, "Pmissile_rackZ", &Pmissile_rackZ},
|
||||
{0x1CA, "PmodemboxZ", &PmodemboxZ},
|
||||
{0x1CB, "PmotorbikeZ", &PmotorbikeZ},
|
||||
{0x1CC, "Pmp5kmagZ", &Pmp5kmagZ},
|
||||
{0x1CD, "PnintendologoZ", &PnintendologoZ},
|
||||
{0x1CE, "Poil_drum1Z", &Poil_drum1Z},
|
||||
{0x1CF, "Poil_drum2Z", &Poil_drum2Z},
|
||||
{0x1D0, "Poil_drum3Z", &Poil_drum3Z},
|
||||
{0x1D1, "Poil_drum5Z", &Poil_drum5Z},
|
||||
{0x1D2, "Poil_drum6Z", &Poil_drum6Z},
|
||||
{0x1D3, "Poil_drum7Z", &Poil_drum7Z},
|
||||
{0x1D4, "PpadlockZ", &PpadlockZ},
|
||||
{0x1D5, "PpalmZ", &PpalmZ},
|
||||
{0x1D6, "PpalmtreeZ", &PpalmtreeZ},
|
||||
{0x1D7, "Pphone1Z", &Pphone1Z},
|
||||
{0x1D8, "PplaneZ", &PplaneZ},
|
||||
{0x1D9, "Pplant11Z", &Pplant11Z},
|
||||
{0x1DA, "Pplant1Z", &Pplant1Z},
|
||||
{0x1DB, "Pplant2Z", &Pplant2Z},
|
||||
{0x1DC, "Pplant2bZ", &Pplant2bZ},
|
||||
{0x1DD, "Pplant3Z", &Pplant3Z},
|
||||
{0x1DE, "Pradio_unit1Z", &Pradio_unit1Z},
|
||||
{0x1DF, "Pradio_unit2Z", &Pradio_unit2Z},
|
||||
{0x1E0, "Pradio_unit3Z", &Pradio_unit3Z},
|
||||
{0x1E1, "Pradio_unit4Z", &Pradio_unit4Z},
|
||||
{0x1E2, "ProofgunZ", &ProofgunZ},
|
||||
{0x1E3, "PsafeZ", &PsafeZ},
|
||||
{0x1E4, "PsafedoorZ", &PsafedoorZ},
|
||||
{0x1E5, "Psat1_reflectZ", &Psat1_reflectZ},
|
||||
{0x1E6, "PsatboxZ", &PsatboxZ},
|
||||
{0x1E7, "PsatdishZ", &PsatdishZ},
|
||||
{0x1E8, "Psec_panelZ", &Psec_panelZ},
|
||||
{0x1E9, "Psev_door3Z", &Psev_door3Z},
|
||||
{0x1EA, "Psev_door3_windZ", &Psev_door3_windZ},
|
||||
{0x1EB, "Psev_door4_windZ", &Psev_door4_windZ},
|
||||
{0x1EC, "Psev_doorZ", &Psev_doorZ},
|
||||
{0x1ED, "Psev_door_v1Z", &Psev_door_v1Z},
|
||||
{0x1EE, "Psev_trislideZ", &Psev_trislideZ},
|
||||
{0x1EF, "PsevdishZ", &PsevdishZ},
|
||||
{0x1F0, "PsevdoormetslideZ", &PsevdoormetslideZ},
|
||||
{0x1F1, "PsevdoornowindZ", &PsevdoornowindZ},
|
||||
{0x1F2, "PsevdoorwindZ", &PsevdoorwindZ},
|
||||
{0x1F3, "PsevdoorwoodZ", &PsevdoorwoodZ},
|
||||
{0x1F4, "PshuttleZ", &PshuttleZ},
|
||||
{0x1F5, "Pshuttle_door_lZ", &Pshuttle_door_lZ},
|
||||
{0x1F6, "Pshuttle_door_rZ", &Pshuttle_door_rZ},
|
||||
{0x1F7, "PsilencerZ", &PsilencerZ},
|
||||
{0x1F8, "Psilo_lift_doorZ", &Psilo_lift_doorZ},
|
||||
{0x1F9, "PsilotopdoorZ", &PsilotopdoorZ},
|
||||
{0x1FA, "PskorpionmagZ", &PskorpionmagZ},
|
||||
{0x1FB, "PspectremagZ", &PspectremagZ},
|
||||
{0x1FC, "PspeedboatZ", &PspeedboatZ},
|
||||
{0x1FD, "Pst_pete_room_1iZ", &Pst_pete_room_1iZ},
|
||||
{0x1FE, "Pst_pete_room_2iZ", &Pst_pete_room_2iZ},
|
||||
{0x1FF, "Pst_pete_room_3tZ", &Pst_pete_room_3tZ},
|
||||
{0x200, "Pst_pete_room_5cZ", &Pst_pete_room_5cZ},
|
||||
{0x201, "Pst_pete_room_6cZ", &Pst_pete_room_6cZ},
|
||||
{0x202, "Psteel_door1Z", &Psteel_door1Z},
|
||||
{0x203, "Psteel_door2Z", &Psteel_door2Z},
|
||||
{0x204, "Psteel_door2bZ", &Psteel_door2bZ},
|
||||
{0x205, "Psteel_door3Z", &Psteel_door3Z},
|
||||
{0x206, "Pstool1Z", &Pstool1Z},
|
||||
{0x207, "Pswipe_card2Z", &Pswipe_card2Z},
|
||||
{0x208, "Pswivel_chair1Z", &Pswivel_chair1Z},
|
||||
{0x209, "PtankZ", &PtankZ},
|
||||
{0x20A, "PtigerZ", &PtigerZ},
|
||||
{0x20B, "Ptorpedo_rackZ", &Ptorpedo_rackZ},
|
||||
{0x20C, "Ptrain_door2Z", &Ptrain_door2Z},
|
||||
{0x20D, "Ptrain_door3Z", &Ptrain_door3Z},
|
||||
{0x20E, "Ptrain_doorZ", &Ptrain_doorZ},
|
||||
{0x20F, "PtrainextdoorZ", &PtrainextdoorZ},
|
||||
{0x210, "Ptt33magZ", &Ptt33magZ},
|
||||
{0x211, "Ptuning_console1Z", &Ptuning_console1Z},
|
||||
{0x212, "Ptv1Z", &Ptv1Z},
|
||||
{0x213, "Ptv4screenZ", &Ptv4screenZ},
|
||||
{0x214, "Ptv_holderZ", &Ptv_holderZ},
|
||||
{0x215, "PtvscreenZ", &PtvscreenZ},
|
||||
{0x216, "PuzimagZ", &PuzimagZ},
|
||||
{0x217, "PvertdoorZ", &PvertdoorZ},
|
||||
{0x218, "PwalletbondZ", &PwalletbondZ},
|
||||
{0x219, "PwindowZ", &PwindowZ},
|
||||
{0x21A, "Pwindow_cor11Z", &Pwindow_cor11Z},
|
||||
{0x21B, "Pwindow_lib_lg1Z", &Pwindow_lib_lg1Z},
|
||||
{0x21C, "Pwindow_lib_sm1Z", &Pwindow_lib_sm1Z},
|
||||
{0x21D, "Pwood_lg_crate1Z", &Pwood_lg_crate1Z},
|
||||
{0x21E, "Pwood_lg_crate2Z", &Pwood_lg_crate2Z},
|
||||
{0x21F, "Pwood_md_crate3Z", &Pwood_md_crate3Z},
|
||||
{0x220, "Pwood_sm_crate4Z", &Pwood_sm_crate4Z},
|
||||
{0x221, "Pwood_sm_crate5Z", &Pwood_sm_crate5Z},
|
||||
{0x222, "Pwood_sm_crate6Z", &Pwood_sm_crate6Z},
|
||||
{0x223, "Pwooden_table1Z", &Pwooden_table1Z},
|
||||
{0x224, "PwppkmagZ", &PwppkmagZ},
|
||||
|
||||
{0x225, "Tbg_ame_all_p_stanZ", &Tbg_ame_all_p_stanZ},
|
||||
{0x226, "Tbg_arch_all_p_stanZ", &Tbg_arch_all_p_stanZ},
|
||||
{0x227, "Tbg_arec_all_p_stanZ", &Tbg_arec_all_p_stanZ},
|
||||
{0x228, "Tbg_ark_all_p_stanZ", &Tbg_ark_all_p_stanZ},
|
||||
{0x229, "Tbg_ash_all_p_stanZ", &Tbg_ash_all_p_stanZ},
|
||||
{0x22A, "Tbg_azt_all_p_stanZ", &Tbg_azt_all_p_stanZ},
|
||||
{0x22B, "Tbg_cat_all_p_stanZ", &Tbg_cat_all_p_stanZ},
|
||||
{0x22C, "Tbg_cave_all_p_stanZ", &Tbg_cave_all_p_stanZ},
|
||||
{0x22D, "Tbg_crad_all_p_stanZ", &Tbg_crad_all_p_stanZ},
|
||||
{0x22E, "Tbg_cryp_all_p_stanZ", &Tbg_cryp_all_p_stanZ},
|
||||
{0x22F, "Tbg_dam_all_p_stanZ", &Tbg_dam_all_p_stanZ},
|
||||
{0x230, "Tbg_depo_all_p_stanZ", &Tbg_depo_all_p_stanZ},
|
||||
{0x231, "Tbg_dest_all_p_stanZ", &Tbg_dest_all_p_stanZ},
|
||||
{0x232, "Tbg_dish_all_p_stanZ", &Tbg_dish_all_p_stanZ},
|
||||
{0x233, "Tbg_ear_all_p_stanZ", &Tbg_imp_all_p_stanZ},
|
||||
{0x234, "Tbg_eld_all_p_stanZ", &Tbg_imp_all_p_stanZ},
|
||||
{0x235, "Tbg_imp_all_p_stanZ", &Tbg_imp_all_p_stanZ},
|
||||
{0x236, "Tbg_jun_all_p_stanZ", &Tbg_jun_all_p_stanZ},
|
||||
{0x237, "Tbg_lee_all_p_stanZ", &Tbg_len_all_p_stanZ},
|
||||
{0x238, "Tbg_len_all_p_stanZ", &Tbg_len_all_p_stanZ},
|
||||
{0x239, "Tbg_lip_all_p_stanZ", &Tbg_oat_all_p_stanZ},
|
||||
{0x23A, "Tbg_lue_all_p_stanZ", &Tbg_oat_all_p_stanZ},
|
||||
{0x23B, "Tbg_oat_all_p_stanZ", &Tbg_oat_all_p_stanZ},
|
||||
{0x23C, "Tbg_pam_all_p_stanZ", &Tbg_pete_all_p_stanZ},
|
||||
{0x23D, "Tbg_pete_all_p_stanZ", &Tbg_pete_all_p_stanZ},
|
||||
{0x23E, "Tbg_ref_all_p_stanZ", &Tbg_ref_all_p_stanZ},
|
||||
{0x23F, "Tbg_rit_all_p_stanZ", &Tbg_run_all_p_stanZ},
|
||||
{0x240, "Tbg_run_all_p_stanZ", &Tbg_run_all_p_stanZ},
|
||||
{0x241, "Tbg_sev_all_p_stanZ", &Tbg_sev_all_p_stanZ},
|
||||
{0x242, "Tbg_sevb_all_p_stanZ", &Tbg_sevb_all_p_stanZ},
|
||||
{0x243, "Tbg_sevx_all_p_stanZ", &Tbg_sevx_all_p_stanZ},
|
||||
{0x244, "Tbg_silo_all_p_stanZ", &Tbg_silo_all_p_stanZ},
|
||||
{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},
|
||||
{0x24B, "UbriefcaveZ", &UbriefcaveZ},
|
||||
{0x24C, "UbriefcontrolZ", &UbriefcontrolZ},
|
||||
{0x24D, "UbriefcradZ", &UbriefcradZ},
|
||||
{0x24E, "UbriefcrypZ", &UbriefcrypZ},
|
||||
{0x24F, "UbriefdamZ", &UbriefdamZ},
|
||||
{0x250, "UbriefdepoZ", &UbriefdepoZ},
|
||||
{0x251, "UbriefdestZ", &UbriefdestZ},
|
||||
{0x252, "UbriefjunZ", &UbriefjunZ},
|
||||
{0x253, "UbriefpeteZ", &UbriefpeteZ},
|
||||
{0x254, "UbriefrunZ", &UbriefrunZ},
|
||||
{0x255, "UbriefsevbZ", &UbriefsevbZ},
|
||||
{0x256, "UbriefsevbunkerZ", &UbriefsevbunkerZ},
|
||||
{0x257, "UbriefsevxZ", &UbriefsevxZ},
|
||||
{0x258, "UbriefsevxbZ", &UbriefsevxbZ},
|
||||
{0x259, "UbriefsiloZ", &UbriefsiloZ},
|
||||
{0x25A, "UbriefstatueZ", &UbriefstatueZ},
|
||||
{0x25B, "UbrieftraZ", &UbrieftraZ},
|
||||
|
||||
{0x25C, "Ump_setupameZ", &Ump_setupameZ},
|
||||
{0x25D, "Ump_setuparchZ", &Ump_setuparchZ},
|
||||
{0x25E, "Ump_setuparkZ", &Ump_setuparkZ},
|
||||
{0x25F, "Ump_setupashZ", &Ump_setupashZ},
|
||||
{0x260, "Ump_setupcaveZ", &Ump_setupcaveZ},
|
||||
{0x261, "Ump_setupcradZ", &Ump_setupcradZ},
|
||||
{0x262, "Ump_setupcrypZ", &Ump_setupcrypZ},
|
||||
{0x263, "Ump_setupdishZ", &Ump_setupdishZ},
|
||||
{0x264, "Ump_setupimpZ", &Ump_setupimpZ},
|
||||
{0x265, "Ump_setupoatZ", &Ump_setupoatZ},
|
||||
{0x266, "Ump_setuprefZ", &Ump_setuprefZ},
|
||||
{0x267, "Ump_setupsevbZ", &Ump_setupsevbZ},
|
||||
{0x268, "Ump_setupstatueZ", &Ump_setupstatueZ},
|
||||
|
||||
{0x269, "UsetuparchZ", &UsetuparchZ},
|
||||
{0x26A, "UsetuparkZ", &UsetuparkZ},
|
||||
{0x26B, "UsetupaztZ", &UsetupaztZ},
|
||||
{0x26C, "UsetupcaveZ", &UsetupcaveZ},
|
||||
{0x26D, "UsetupcontrolZ", &UsetupcontrolZ},
|
||||
{0x26E, "UsetupcradZ", &UsetupcradZ},
|
||||
{0x26F, "UsetupcrypZ", &UsetupcrypZ},
|
||||
{0x270, "UsetupdamZ", &UsetupdamZ},
|
||||
{0x271, "UsetupdepoZ", &UsetupdepoZ},
|
||||
{0x272, "UsetupdestZ", &UsetupdestZ},
|
||||
{0x273, "UsetupjunZ", &UsetupjunZ},
|
||||
{0x274, "UsetuplenZ", &UsetuplenZ},
|
||||
{0x275, "UsetuppeteZ", &UsetuppeteZ},
|
||||
{0x276, "UsetuprunZ", &UsetuprunZ},
|
||||
{0x277, "UsetupsevbZ", &UsetupsevbZ},
|
||||
{0x278, "UsetupsevbunkerZ", &UsetupsevbunkerZ},
|
||||
{0x279, "UsetupsevxZ", &UsetupsevxZ},
|
||||
{0x27A, "UsetupsevxbZ", &UsetupsevxbZ},
|
||||
{0x27B, "UsetupsiloZ", &UsetupsiloZ},
|
||||
{0x27C, "UsetupstatueZ", &UsetupstatueZ},
|
||||
{0x27D, "UsetuptraZ", &UsetuptraZ},
|
||||
|
||||
{0x27E, "LameE", &LameE},
|
||||
{0x27F, "LameJ", &LameJ},
|
||||
{0x280, "LarchE", &LarchE},
|
||||
{0x281, "LarchJ", &LarchJ},
|
||||
{0x282, "LarecE", &LarecE},
|
||||
{0x283, "LarecJ", &LarecJ},
|
||||
{0x284, "LarkE", &LarkE},
|
||||
{0x285, "LarkJ", &LarkJ},
|
||||
{0x286, "LashE", &LashE},
|
||||
{0x287, "LashJ", &LashJ},
|
||||
{0x288, "LaztE", &LaztE},
|
||||
{0x289, "LaztJ", &LaztJ},
|
||||
{0x28A, "LcatE", &LcatE},
|
||||
{0x28B, "LcatJ", &LcatJ},
|
||||
{0x28C, "LcaveE", &LcaveE},
|
||||
{0x28D, "LcaveJ", &LcaveJ},
|
||||
{0x28E, "LcradE", &LcradE},
|
||||
{0x28F, "LcradJ", &LcradJ},
|
||||
{0x290, "LcrypE", &LcrypE},
|
||||
{0x291, "LcrypJ", &LcrypJ},
|
||||
{0x292, "LdamE", &LdamE},
|
||||
{0x293, "LdamJ", &LdamJ},
|
||||
{0x294, "LdepoE", &LdepoE},
|
||||
{0x295, "LdepoJ", &LdepoJ},
|
||||
{0x296, "LdestE", &LdestE},
|
||||
{0x297, "LdestJ", &LdestJ},
|
||||
{0x298, "LdishE", &LdishE},
|
||||
{0x299, "LdishJ", &LdishJ},
|
||||
{0x29A, "LearE", &LearE},
|
||||
{0x29B, "LearJ", &LearJ},
|
||||
{0x29C, "LeldE", &LeldE},
|
||||
{0x29D, "LeldJ", &LeldJ},
|
||||
{0x29E, "LgunE", &LgunE},
|
||||
{0x29F, "LgunJ", &LgunJ},
|
||||
{0x2A0, "LimpE", &LimpE},
|
||||
{0x2A1, "LimpJ", &LimpJ},
|
||||
{0x2A2, "LjunE", &LjunE},
|
||||
{0x2A3, "LjunJ", &LjunJ},
|
||||
{0x2A4, "LleeE", &LleeE},
|
||||
{0x2A5, "LleeJ", &LleeJ},
|
||||
{0x2A6, "LlenE", &LlenE},
|
||||
{0x2A7, "LlenJ", &LlenJ},
|
||||
{0x2A8, "LlipE", &LlipE},
|
||||
{0x2A9, "LlipJ", &LlipJ},
|
||||
{0x2AA, "LlueE", &LlueE},
|
||||
{0x2AB, "LlueJ", &LlueJ},
|
||||
{0x2AC, "LmiscE", &LmiscE},
|
||||
{0x2AD, "LmiscJ", &LmiscJ},
|
||||
{0x2AE, "LmpmenuE", &LmpmenuE},
|
||||
{0x2AF, "LmpmenuJ", &LmpmenuJ},
|
||||
{0x2B0, "LmpweaponsE", &LmpweaponsE},
|
||||
{0x2B1, "LmpweaponsJ", &LmpweaponsJ},
|
||||
{0x2B2, "LoatE", &LoatE},
|
||||
{0x2B3, "LoatJ", &LoatJ},
|
||||
{0x2B4, "LoptionsE", &LoptionsE},
|
||||
{0x2B5, "LoptionsJ", &LoptionsJ},
|
||||
{0x2B6, "LpamE", &LpamE},
|
||||
{0x2B7, "LpamJ", &LpamJ},
|
||||
{0x2B8, "LpeteE", &LpeteE},
|
||||
{0x2B9, "LpeteJ", &LpeteJ},
|
||||
{0x2BA, "LpropobjE", &LpropobjE},
|
||||
{0x2BB, "LpropobjJ", &LpropobjJ},
|
||||
{0x2BC, "LrefE", &LrefE},
|
||||
{0x2BD, "LrefJ", &LrefJ},
|
||||
{0x2BE, "LritE", &LritE},
|
||||
{0x2BF, "LritJ", &LritJ},
|
||||
{0x2C0, "LrunE", &LrunE},
|
||||
{0x2C1, "LrunJ", &LrunJ},
|
||||
{0x2C2, "LsevE", &LsevE},
|
||||
{0x2C3, "LsevJ", &LsevJ},
|
||||
{0x2C4, "LsevbE", &LsevbE},
|
||||
{0x2C5, "LsevbJ", &LsevbJ},
|
||||
{0x2C6, "LsevxE", &LsevxE},
|
||||
{0x2C7, "LsevxJ", &LsevxJ},
|
||||
{0x2C8, "LsevxbE", &LsevxbE},
|
||||
{0x2C9, "LsevxbJ", &LsevxbJ},
|
||||
{0x2CA, "LshoE", &LshoE},
|
||||
{0x2CB, "LshoJ", &LshoJ},
|
||||
{0x2CC, "LsiloE", &LsiloE},
|
||||
{0x2CD, "LsiloJ", &LsiloJ},
|
||||
{0x2CE, "LstatE", &LstatE},
|
||||
{0x2CF, "LstatJ", &LstatJ},
|
||||
{0x2D0, "LtitleE", &LtitleE},
|
||||
{0x2D1, "LtitleJ", &LtitleJ},
|
||||
{0x2D2, "LtraE", &LtraE},
|
||||
{0x2D3, "LtraJ", &LtraJ},
|
||||
{0x2D4, "LwaxE", &LwaxE},
|
||||
{0x2D5, "LwaxJ", &LwaxJ},
|
||||
|
||||
{0x2D6, "ob/ob_end.seg", &ob__ob_end_seg},
|
||||
{0},
|
||||
{0},
|
||||
{0},
|
||||
{0},
|
||||
{0},
|
||||
{0},
|
||||
{0},
|
||||
{0},
|
||||
{0}
|
||||
};
|
||||
|
||||
//only defined here as used (so far) exclusively in ob.c
|
||||
//and easy to generate at compile time
|
||||
#define OBJ_INDEX_END 0x2D7
|
||||
#define OBJ_INDEX_MAX 0x2E0
|
|
@ -0,0 +1,254 @@
|
|||
#include "ultra64.h"
|
||||
#include "stagesetup.h"
|
||||
|
||||
s32 intro[];
|
||||
u32 props[];
|
||||
struct path paths[];
|
||||
struct ailist ailists[];
|
||||
struct preset0x presets0x[];
|
||||
struct preset0x presets2x_0[];
|
||||
struct preset2x presets2x_2[];
|
||||
|
||||
struct stagesetup setup = {
|
||||
pathtbl,
|
||||
pathlink,
|
||||
intro,
|
||||
props,
|
||||
paths,
|
||||
ailists,
|
||||
presets0x,
|
||||
presets2x_0,
|
||||
NULL,
|
||||
NULL,
|
||||
};
|
||||
struct preset0x presets0x[] = {
|
||||
{ -389.0f, 95.0f, 160.0f, 0.0f, 1.0f, 0.0f, -0.999859f, 0.0f, -0.016799f, "p274a2", 0},
|
||||
{ -1536.0f, 95.0f, 767.0f, 0.0f, 1.0f, 0.0f, -0.999859f, 0.0f, -0.016799f, "p330a", 0},
|
||||
{ -338.0f, 95.0f, -523.0f, 0.0f, 1.0f, 0.0f, -0.999859f, 0.0f, -0.016799f, "p297a", 0},
|
||||
{ -323.0f, 95.0f, -2251.0f, 0.0f, 1.0f, 0.0f, -0.999859f, 0.0f, -0.016799f, "p306a", 0},
|
||||
{ -1615.0f, 95.0f, -1247.0f, 0.0f, 1.0f, 0.0f, -0.999859f, 0.0f, -0.016799f, "p319a", 0},
|
||||
{ 307.0f, 95.0f, 301.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p493a2", 0},
|
||||
{ 530.0f, 95.0f, 742.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p577a2", 0},
|
||||
{ -769.0f, 95.0f, -947.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p299a", 0},
|
||||
{ -772.0f, 95.0f, -2027.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p309a", 0},
|
||||
{ -1647.0f, 95.0f, -1305.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p319a", 0},
|
||||
{ -2082.0f, 95.0f, -364.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p43a1", 0},
|
||||
{ -1647.0f, 95.0f, 770.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p328a", 0},
|
||||
{ 258.0f, 379.0f, -1623.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p343a1", 0},
|
||||
{ -1419.0f, 379.0f, 73.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p338a2", 0},
|
||||
{ -1236.0f, 379.0f, -951.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p175a2", 0},
|
||||
{ -2130.0f, 95.0f, -1043.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p51a2", 0},
|
||||
{ -461.0f, 379.0f, -1594.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p176a1", 0},
|
||||
{ 299.0f, 95.0f, 104.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p493a1", 0},
|
||||
{ 107.0f, 95.0f, 524.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p487a1", 0},
|
||||
{ 286.0f, 95.0f, 506.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p575a", 0},
|
||||
{ 802.0f, 95.0f, 506.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p29a", 0},
|
||||
{ -454.0f, 95.0f, -1231.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p298a", 0},
|
||||
{ -1016.0f, 95.0f, -644.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p303a", 0},
|
||||
{ -280.0f, 95.0f, -2246.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p306a", 0},
|
||||
{ -1264.0f, 95.0f, -1763.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p310a", 0},
|
||||
{ -1784.0f, 95.0f, -1815.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p316a", 0},
|
||||
{ -2081.0f, 95.0f, -1567.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p166a2", 0},
|
||||
{ -1957.0f, 95.0f, -625.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p323a", 0},
|
||||
{ -1741.0f, 95.0f, -471.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p325a", 0},
|
||||
{ -1815.0f, 95.0f, 483.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p328a", 0},
|
||||
{ -1852.0f, 95.0f, 1084.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p331a", 0},
|
||||
{ 26.0f, 379.0f, -1200.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p184a1", 0},
|
||||
{ 14.0f, 379.0f, -2041.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p182a2", 0},
|
||||
{ -1814.0f, 379.0f, 92.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p186a1", 0},
|
||||
{ -1579.0f, 379.0f, 469.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p188a1", 0},
|
||||
{ -497.0f, 379.0f, -434.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p172a1", 0},
|
||||
{ -1010.0f, 379.0f, -1411.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p174a1", 0},
|
||||
{ -778.0f, -142.0f, 1050.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p1104a", 0},
|
||||
{ 757.0f, -142.0f, 480.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p1162a", 0},
|
||||
{ -1406.0f, -142.0f, -1685.0f, 0.0f, 1.0f, 0.0f, 0.016798f, 0.0f, -0.999859f, "p1125a", 0},
|
||||
{ 1044.0f, -142.0f, -781.0f, 0.0f, 1.0f, 0.0f, 0.016798f, 0.0f, -0.999859f, "p1171a", 0},
|
||||
{ -688.0f, -142.0f, -744.0f, 0.0f, 1.0f, 0.0f, -0.999859f, 0.0f, -0.016798f, "p803a2", 0},
|
||||
{ 524.0f, -142.0f, 208.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p1163a", 0},
|
||||
{ 486.0f, -142.0f, -1369.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p1244a", 0},
|
||||
{ -1220.0f, -142.0f, 84.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p787a1", 0},
|
||||
{ -745.0f, -142.0f, 834.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p1080a", 0},
|
||||
{ -976.0f, -142.0f, -2059.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p1145a", 0},
|
||||
{ -968.0f, -142.0f, -736.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p799a2", 0},
|
||||
{ -212.0f, -142.0f, -495.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p591a2", 0},
|
||||
{ 524.0f, -142.0f, 86.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p1163a", 0},
|
||||
{ 532.0f, -142.0f, 330.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p1162a", 0},
|
||||
{ 739.0f, -142.0f, -1636.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p1261a", 0},
|
||||
{ -849.0f, -142.0f, -727.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p799a2", 0},
|
||||
{ 264.0f, -142.0f, -1047.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p1249a", 0},
|
||||
{ -975.0f, -142.0f, 667.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p1087a", 0},
|
||||
{ -531.0f, -142.0f, 636.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p1092a", 0},
|
||||
{ -1365.0f, -142.0f, -152.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p792a1", 0},
|
||||
{ -1005.0f, -142.0f, -144.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p793a2", 0},
|
||||
{ -1280.0f, -142.0f, -2058.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p1116a", 0},
|
||||
{ -1098.0f, -142.0f, -715.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p799a1", 0},
|
||||
{ -1038.0f, 95.0f, -1049.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p305a", 0},
|
||||
{ -1896.0f, -142.0f, -2399.0f, 0.0f, 1.0f, 0.0f, 0.016799f, 0.0f, -0.999859f, "p938a2", 0},
|
||||
{ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 00000000, 0},
|
||||
};
|
||||
|
||||
|
||||
struct preset0x presets2x_0[] = {
|
||||
{ 380.0f, 95.0f, -127.0f,-1.0f, 0.0f, 1.0E-6f, 0.0f, 1.0f, 0.0f, "p25a2", 0},
|
||||
};
|
||||
struct preset2x presets2x_2[] = {
|
||||
{-89.0f, 90.0f, -5.7E-5f, 5.6E-5f, -94.99999f, 93.99999f, 199.0f, 95.0f, -265.0f, -1.0f, 0.0f, 1.0E-6f, 0.0f, 1.0f, 0.0f, "p25a1", 0},
|
||||
{-110.0f, 114.0f, -5.8E-5f, 5.5E-5f, -94.99999f, 93.99999f, 207.0f, 95.0f, 74.0f, -1.0f, 0.0f, 1.0E-6f, 0.0f, 1.0f, 0.0f, "p493a1", 0},
|
||||
{-72.0f, 74.0f, -5.7E-5f, 5.6E-5f, -94.99999f, 93.99999f, 207.0f, 95.0f, 307.0f, -1.0f, 0.0f, 1.0E-6f, 0.0f, 1.0f, 0.0f, "p493a1", 0},
|
||||
{-72.0f, 74.0f, -5.7E-5f, 5.6E-5f, -94.99999f, 93.99999f, 116.0f, 95.0f, 405.0f, -1.0E-6f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f, "p487a1", 0},
|
||||
{-72.0f, 73.0f, -5.7E-5f, 5.6E-5f, -94.99999f, 93.99999f, -117.0f, 95.0f, 405.0f, -1.0E-6f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f, "p487a1", 0},
|
||||
{-72.0f, 73.0f, -5.7E-5f, 5.6E-5f, -94.99999f, 93.99999f, -479.0f, 95.0f, 623.0f, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f, "p28a2", 0},
|
||||
{-89.0f, 90.0f, -4.5E-5f, 4.4E-5f, -94.99999f, 93.99999f, -341.0f, 95.0f, 443.0f, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f, "p28a2", 0},
|
||||
{-111.0f, 114.0f, -4.2E-5f, 4.1E-5f, -94.99999f, 93.99999f, -1841.0f, 95.0f, -568.0f, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f, "p325a", 0},
|
||||
{-167.0f, 170.0f, -4.2E-5f, 4.1E-5f, -94.99999f, 93.99999f, -1671.0f, 95.0f, -435.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, "p325a", 0},
|
||||
{-133.0f, 136.0f, -4.2E-5f, 4.1E-5f, -94.99999f, 93.99999f, -1685.0f, 95.0f, -1514.0f, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f, "p319a", 0},
|
||||
{-167.0f, 170.0f, -4.2E-5f, 4.1E-5f, -94.99999f, 93.99999f, -1667.0f, 95.0f, -1761.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, "p319a", 0},
|
||||
{-133.0f, 136.0f, -4.2E-5f, 4.1E-5f, -94.99999f, 93.99999f, -2022.0f, 39.0f, -767.0f, 1.0E-6f, -1.0E-6f, -1.0f, 0.0f, 1.0f, 0.0f, "p62a1", 0},
|
||||
{-15.000288f, 14.000024f, -9.000112f, 180.00003f, -39.000004f, 151.00002f, -2022.0f, 39.0f, -1145.0f, 1.0E-6f, -1.0E-6f, -1.0f, 0.0f, 1.0f, 0.0f, "p61a1", 0},
|
||||
{-15.000289f, 14.000024f, -9.000112f, 181.00003f, -39.000004f, 151.00002f, 464.0f, 39.0f, 402.0f, 1.0f, -1.0E-6f, 1.0E-6f, 0.0f, 1.0f, 0.0f, "p60a2", 0},
|
||||
{-15.000236f, 15.000024f, -9.000112f, 142.00005f, -39.000004f, 151.00002f, 464.0f, 39.0f, -23.0f, 1.0f, -1.0E-6f, 1.0E-6f, 0.0f, 1.0f, 0.0f, "p57a2", 0},
|
||||
{-15.000236f, 14.000024f, -9.000112f, 142.00003f, -39.000004f, 151.00002f, 213.0f, 39.0f, 786.0f, 1.0E-6f, -1.0E-6f, -1.0f, 0.0f, 1.0f, 0.0f, "p58a1", 0},
|
||||
{-15.000236f, 14.000024f, -9.000112f, 142.00003f, -39.000004f, 151.00002f, -213.0f, 39.0f, 786.0f, 1.0E-6f, -1.0E-6f, -1.0f, 0.0f, 1.0f, 0.0f, "p59a1", 0},
|
||||
{-14.000236f, 15.000024f, -9.00011f, 142.00005f, -39.000004f, 151.00002f, -1340.0f, 39.0f, -804.0f, 1.0E-6f, -1.0E-6f, -1.0f, 0.0f, 1.0f, 0.0f, "p56a2", 0},
|
||||
{-15.000237f, 14.000024f, -9.000112f, 143.00003f, -39.000004f, 151.00002f, -1500.0f, 39.0f, -804.0f, 1.0E-6f, -1.0E-6f, -1.0f, 0.0f, 1.0f, 0.0f, "p56a2", 0},
|
||||
{-15.000237f, 14.000024f, -9.000112f, 143.00003f, -39.000004f, 151.00002f, -2041.0f, -188.0f, -2392.0f, 3.0E-6f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f, "p938a1", 0},
|
||||
{-4.000306f, 4.00002f, -6.000065f, 108.00002f, -40.0f, 150.0f, 219.0f, -188.0f, 979.0f, 3.0E-6f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f, "p581a1", 0},
|
||||
{-5.000306f, 4.00002f, -6.000068f, 108.00002f, -40.0f, 150.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 00000000, 0},
|
||||
};
|
||||
|
||||
/*
|
||||
00001100 00000000 ddw 0h
|
||||
00001104 00000000 ddw 0h
|
||||
00001108 00000000 ddw 0h
|
||||
0000110c 00000000 ddw 0h
|
||||
00001110 00000000 ddw 0h
|
||||
00001114 00000000 ddw 0h
|
||||
*/
|
||||
|
||||
u32 props[] = {
|
||||
weapon(0x100, 0x0, 0x14D, 0x3B, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0x58, 0xFF, 0xFFFF, 0x0)
|
||||
bodyarmor(0x180, 0x0, 0x73, 0x30, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0x10000, 0x0)
|
||||
bodyarmor(0x180, 0x0, 0x73, 0xF, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0x10000, 0x0)
|
||||
bodyarmor(0x180, 0x0, 0x73, 0x10, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0x10000, 0x0)
|
||||
weapon(0x200, 0x0, 0x0, 0x2A, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF0, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x31, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x32, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x200, 0x0, 0x0, 0x2F, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF0, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x34, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x3B, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x200, 0x0, 0x0, 0x8, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF1, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x17, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x18, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x200, 0x0, 0x0, 0xA, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF1, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x1B, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x1C, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x133, 0x0, 0x0, 0x2D, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF2, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x36, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x37, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x133, 0x0, 0x0, 0x2E, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF2, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x3A, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x133, 0x0, 0x0, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF3, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x11, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x12, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x133, 0x0, 0x0, 0x9, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF3, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x19, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x1A, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x133, 0x0, 0x0, 0xC, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF4, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x1F, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x20, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x100, 0x0, 0x0, 0x2B, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF4, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x33, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x35, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x100, 0x0, 0x0, 0x2C, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF5, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x38, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x39, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x100, 0x0, 0x0, 0x6, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF5, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x13, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x14, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x100, 0x0, 0x0, 0xB, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF6, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x1D, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x1E, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x100, 0x0, 0x0, 0xD, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF6, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x21, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x22, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x100, 0x0, 0x0, 0x7, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF6, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x15, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x16, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
weapon(0x100, 0x0, 0x0, 0xE, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xF7, 0xFF, 0xFFFF, 0x0)
|
||||
ammobox(0x99, 0x0, 0x5, 0x23, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
ammobox(0x99, 0x0, 0x5, 0x24, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000)
|
||||
glass(0x100, 0x0, 0x68, 0x2710, 0x4000B62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0)
|
||||
glass(0x100, 0x0, 0x68, 0x2711, 0x4000B62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0)
|
||||
glass(0x100, 0x0, 0x68, 0x2712, 0x4000B62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0)
|
||||
glass(0x100, 0x0, 0x68, 0x2713, 0x4000B62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0)
|
||||
glass(0x100, 0x0, 0x68, 0x2714, 0x4000B62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0)
|
||||
glass(0x100, 0x0, 0x68, 0x2715, 0x4000B62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0)
|
||||
glass(0x100, 0x0, 0x68, 0x2716, 0x4000B62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0)
|
||||
glass(0x100, 0x0, 0x68, 0x2717, 0x4000B62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0)
|
||||
glass(0x100, 0x0, 0x68, 0x2718, 0x4000B62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0)
|
||||
glass(0x100, 0x0, 0x68, 0x2719, 0x4000B62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0)
|
||||
glass(0x100, 0x0, 0x68, 0x271A, 0x4000B62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0)
|
||||
glass(0x100, 0x0, 0x68, 0x271B, 0x4000B62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0)
|
||||
door(0x100, 0x0, 0x12A, 0xC, 0x10000400, 0x20000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0x0, 0xF333, 0xE70A, 0x51, 0x51, 0x666, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x5DC, 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
|
||||
door(0x100, 0x0, 0x12A, 0xD, 0x10000400, 0x20000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0x0, 0xF333, 0xE70A, 0x51, 0x51, 0x666, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x5DC, 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
|
||||
door(0x100, 0x0, 0x12A, 0xE, 0x10000400, 0x20000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0x0, 0xF333, 0xE70A, 0x51, 0x51, 0x666, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x5DC, 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
|
||||
door(0x100, 0x0, 0x12A, 0xF, 0x10000400, 0x20000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0x0, 0xF333, 0xE70A, 0x51, 0x51, 0x666, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x5DC, 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
|
||||
door(0x100, 0x0, 0x12A, 0x10, 0x10000400, 0x20000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0x0, 0xF333, 0xE70A, 0x51, 0x51, 0x666, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x5DC, 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
|
||||
door(0x100, 0x0, 0x12A, 0x11, 0x10000400, 0x20000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0x0, 0xF333, 0xE70A, 0x51, 0x51, 0x666, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x5DC, 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
|
||||
door(0x100, 0x0, 0x12A, 0x12, 0x10000400, 0x20000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0x0, 0xF333, 0xE70A, 0x51, 0x51, 0x666, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x5DC, 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
|
||||
door(0x100, 0x0, 0x12A, 0x13, 0x10000400, 0x20000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E8, 0x0, 0x0, 0x0, 0x0, 0xF333, 0xE70A, 0x51, 0x51, 0x666, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x5DC, 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
|
||||
endprops()
|
||||
};
|
||||
|
||||
s32 intro[] = {
|
||||
spawnpoint(0x0, 0x0)
|
||||
spawnpoint(0x1, 0x0)
|
||||
spawnpoint(0x2, 0x0)
|
||||
spawnpoint(0x3, 0x0)
|
||||
spawnpoint(0x4, 0x0)
|
||||
spawnpoint(0x25, 0x0)
|
||||
spawnpoint(0x26, 0x0)
|
||||
spawnpoint(0x27, 0x0)
|
||||
startweapon(0x1, 0xFFFFFFFF, 0x0)
|
||||
cuff(0x3)
|
||||
endintro()
|
||||
};
|
||||
|
||||
s32 linkedpathsets1[] = {
|
||||
0xFFFFFFFF
|
||||
};
|
||||
|
||||
s32 linkedpathsets2[] = {
|
||||
0xFFFFFFFF
|
||||
};
|
||||
|
||||
struct s_pathLink pathlink[] = {
|
||||
{0x00000000, 0x00000000, 0x00000000}
|
||||
};
|
||||
|
||||
s32 linkedpathtbls[] = {
|
||||
0xFFFFFFFF
|
||||
};
|
||||
|
||||
struct s_pathTbl pathtbl[] = {
|
||||
{0xFFFF, 0xFFFF, 0, 0, 0, 0, 0}
|
||||
};
|
||||
|
||||
s32 pathsetentries[] = {
|
||||
0xFFFFFFFF
|
||||
};
|
||||
|
||||
|
||||
struct s_pathSet pathsets[] = {
|
||||
{0, 0, 0, 0, 0}
|
||||
};
|
||||
|
||||
s32 unknown[] = {
|
||||
0x4000000
|
||||
};
|
||||
|
||||
|
||||
s32 ailist[] = {
|
||||
0x0, 0x0, 0x0, 0x0, 0x0
|
||||
}
|
||||
|
|
@ -0,0 +1,318 @@
|
|||
#ifndef _STAGESETUP_H_
|
||||
#define _STAGESETUP_H_
|
||||
|
||||
struct s_pathTbl {
|
||||
s16 pathtbl;
|
||||
s16 field_0x2;
|
||||
u32 *field_0x4; //
|
||||
s16 field_0x8;
|
||||
s16 field_0xa;
|
||||
s16 field_0xc;
|
||||
s16 field_0xe;
|
||||
};
|
||||
|
||||
struct s_pathLink {
|
||||
void *pathlink;
|
||||
void *field_0x4;
|
||||
void *field_0x8;
|
||||
};
|
||||
|
||||
struct s_pathSet {
|
||||
void *field_0x0;
|
||||
u8 field_0x4;
|
||||
u8 field_0x5;
|
||||
u8 field_0x6;
|
||||
u8 field_0x7;
|
||||
};
|
||||
|
||||
struct preset0x {
|
||||
float xcoord;
|
||||
float ycoord;
|
||||
float zcoord;
|
||||
float vUpX;
|
||||
float vUpY;
|
||||
float vUpZ;
|
||||
float vTargetX;
|
||||
float vTargetY;
|
||||
float vTargetZ;
|
||||
u8 *field_0x24;
|
||||
u32 field_0x28;
|
||||
};
|
||||
|
||||
struct preset2x {
|
||||
float field_0x0;
|
||||
float field_0x4;
|
||||
float field_0x8;
|
||||
float field_0xc;
|
||||
float field_0x10;
|
||||
float field_0x14;
|
||||
float field_0x18;
|
||||
float field_0x1c;
|
||||
float field_0x20;
|
||||
float field_0x24;
|
||||
float field_0x28;
|
||||
float field_0x2c;
|
||||
float field_0x30;
|
||||
float field_0x34;
|
||||
float field_0x38;
|
||||
u8 *field_0x3c;
|
||||
u32 field_0x40;
|
||||
};
|
||||
|
||||
struct stagesetup {
|
||||
struct s_pathTbl *pathtbl;
|
||||
struct s_pathLink *pathlink;
|
||||
s32 *intro;
|
||||
u32 *props;
|
||||
struct s_pathSet *paths;
|
||||
u32 *ailists;
|
||||
struct preset0x *presets0x;
|
||||
struct preset0x *presets2x_0;
|
||||
NULL;
|
||||
NULL;
|
||||
};
|
||||
|
||||
#define _mkshort(a, b) ((a << 8) | (b & 0xff))
|
||||
#define _mkword(a, b) ((a << 16) | (b & 0xffff))
|
||||
|
||||
#define _generic_object(scale, state, type, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c) \
|
||||
_mkword(scale, _mkshort(state, type)), \
|
||||
_mkword(objectID, presetID), \
|
||||
flags1, flags2, \
|
||||
ptrPOSData, ptrObjInstanceController, \
|
||||
u18, u1c, u20, u24, \
|
||||
u28, u2c, u30, u34, \
|
||||
u38, u3c, u40, u44, \
|
||||
u48, u4c, u50, u54, \
|
||||
xPOS, yPOS, zPOS, bitflags, \
|
||||
ptrCollisionblock, u6c, u70, \
|
||||
_mkword(health, maxhealth), \
|
||||
u78, u7c
|
||||
|
||||
#define door(scale, state, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c, linkedtodoor, travel_distance, walkthrough_distance, acceleration, rate, maxspeed, opentechnique_a, opentechnique_b, u9c, u9d, u9e, locked, time_open, sound, ua8, uac, ub0, ub4, ub8, ubc, uc0, uc4, uc8, ptr_doorNotClearVtxBuffer, ud0, ud4, ud8, udc, ue0, ue4, ue8, uec, uf0, uf4, uf8, ufc) \
|
||||
_generic_object(scale, state, 0x01, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c) \
|
||||
linkedtodoor, \
|
||||
travel_distance, walkthrough_distance, \
|
||||
acceleration, rate, maxspeed, \
|
||||
_mkword(opentechnique_a, opentechnique_b), \
|
||||
_mkword(_mkshort(u9c, u9d), _mkshort(u9e, locked)), \
|
||||
time_open, sound, \
|
||||
ua8, uac, ub0, ub4, \
|
||||
ub8, ubc, uc0, uc4, \
|
||||
uc8, ptr_doorNotClearVtxBuffer, ud0, ud4, \
|
||||
ud8, udc, ue0, ue4, \
|
||||
ue8, uec, uf0, uf4, \
|
||||
uf8, ufc,
|
||||
|
||||
#define door_scale(modifier) \
|
||||
0x2, modifier,
|
||||
|
||||
#define standard(scale, state, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c) \
|
||||
_generic_object(scale, state, 0x3, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c),
|
||||
|
||||
#define key(scale, state, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c, key) \
|
||||
_generic_object(scale, state, 0x4, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c), \
|
||||
key,
|
||||
|
||||
#define alarm(scale, state, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c) \
|
||||
_generic_object(scale, state, 0x5, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c),
|
||||
|
||||
#define surveillencecam()
|
||||
_TODO(0x6)
|
||||
|
||||
#define ammoclip(scale, state, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c, ammotype) \
|
||||
_generic_object(scale, state, 0x7, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c), \
|
||||
ammotype,
|
||||
|
||||
#define weapon(scale, state, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c, gun_pickup, linked_item, timer, ptr_linkeditem) \
|
||||
_generic_object(scale, state, 0x8, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c), \
|
||||
_mkword(_mkshort(gun_pickup, linked_item), timer), \
|
||||
ptr_linkeditem,
|
||||
|
||||
#define guard(scale, state, type, ID, spawnpreset, bodyID, action_path_assignment, preset_to_trigger, u10, health, reactiontime, head, ptr_runtimeguarddata) \
|
||||
_mkword(scale, _mkshort(state, 0x9), \
|
||||
_mkword(ID, spawnpreset), \
|
||||
_mkword(bodyID, action_path_assignment), \
|
||||
preset_to_trigger, \
|
||||
_mkword(u10, health), \
|
||||
_mkword(reactiontime, head), \
|
||||
ptr_runtimeguarddata,
|
||||
|
||||
|
||||
#define single_monitor(size, state, u4, u8, uc, u10, u14, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, u58, u5c, u60, u64, u68, u6c, u70, health, maxhealth, u78, ptrAniRoutine, curNumCMDSfromStartRotation, loopcounteer, imgnum_or_ptrheader, rotation, curHZoom, curHZoomTime, finalHZoomTime, initialHZoom, finalHZoom, curVZoom, curVZoomTime, finalVZoomTime, initialVZoom, finalVZoom, curHPos, curHScrollTime, finalHScrollTime, initialHPos, finalHPos, curVPos, curVScrollTime, finalVScrollTime, initialVPos, finalVPos, curRed, initialRed, finalRed, curGreen, initialGreen, finalGreen, curBlue, initialBlue, finalBlue, curAlpha, initialAlpha, finalAlpha, curColorTransitionTime, finalColorTransitionTime, backwardMonLink, forwardMonLink, animationnum) \
|
||||
_mkword(size, _mkshort(state, 0xA)), \
|
||||
u4, u8, uc, u10, \
|
||||
u14, u18, u1c, u20, \
|
||||
u24, u28, u2c, u30, \
|
||||
u34, u38, u3c, u40, \
|
||||
u44, u48, u4c, u50, \
|
||||
u54, u58, u5c, u60, \
|
||||
u64, u68, u6c, u70, \
|
||||
_mkword(health, maxhealth), \
|
||||
u78, ptrAniRoutine, \
|
||||
curNumCMDSfromStartRotation, loopcounteer, \
|
||||
imgnum_or_ptrheader, rotation, \
|
||||
curHZoom, curHZoomTime, finalHZoomTime, initialHZoom, finalHZoom, \
|
||||
curVZoom, curVZoomTime, finalVZoomTime, initialVZoom, finalVZoom, \
|
||||
curHPos, curHScrollTime, finalHScrollTime, initialHPos, finalHPos, \
|
||||
curVPos, curVScrollTime, finalVScrollTime, initialVPos, finalVPos, \
|
||||
_mkword(_mkshort(curRed, initialRed), _mkshort(finalRed, curGreen)), \
|
||||
_mkword(_mkshort(initialGreen, finalGreen), _mkshort(curBlue, initialBlue)), \
|
||||
_mkword(_mkshort(finalBlue, curAlpha), _mkshort(initialAlpha, finalAlpha)), \
|
||||
curColorTransitionTime, finalColorTransitionTime, \
|
||||
backwardMonLink, forwardMonLink, \
|
||||
animationnum,
|
||||
|
||||
#define multi_monitor() \
|
||||
_TODO(0xB)
|
||||
|
||||
#define hanging_monitor() \
|
||||
_TODO(0xC)
|
||||
|
||||
#define autogun() \
|
||||
_TODO(0xD)
|
||||
|
||||
#define linkpickups() \
|
||||
_TODO(0xE)
|
||||
|
||||
#define unknownF() \
|
||||
_TODO(0xF)
|
||||
|
||||
#define unknown10() \
|
||||
_TODO(0x10)
|
||||
|
||||
#define hat(scale, state, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c) \
|
||||
_generic_object(scale, state, 0x11, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c),
|
||||
|
||||
#define setguardattribute(guardID, attribute) \
|
||||
0x12, guardID, attribute,
|
||||
|
||||
#define switch(numAwayForControlling, numAwayForControlled, field_0xc) \
|
||||
0x13, numAwayForControlling, numAwayForControlled, field_0xc,
|
||||
|
||||
#define ammobox(scale, state, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c, ammo_9mm, ammo_9mm_2, ammo_rifle, ammo_shotgun, ammo_hgrenade, ammo_rockets, ammo_remote, ammo_prox, ammo_timed, ammo_throwing, ammo_glaunch, ammo_magnum, ammo_golden) \
|
||||
_generic_object(scale, state, 0x14, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c), \
|
||||
ammo_9mm, ammo_9mm_2, ammo_rifle, ammo_shotgun, ammo_hgrenade, ammo_rockets, ammo_remote, ammo_prox, ammo_timed, ammo_throwing, ammo_glaunch, ammo_magnum, ammo_golden,
|
||||
|
||||
#define bodyarmor(scale, state, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c, armor_strength, armor_percent) \
|
||||
_generic_object(scale, state, 0x15, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c), \
|
||||
armor_strength, armor_percent,
|
||||
|
||||
#define tag(IDnum, numobjects_away, field_0x8, field_0xc) \
|
||||
0x16, IDnum, numobjects_away, field_0x8, field_0xc,
|
||||
|
||||
#define mission_objective(objectivenum, textID, mindifficulty) \
|
||||
0x17, objectivenum, textID, mindifficulty,
|
||||
|
||||
#define endobjective() \
|
||||
0x18,
|
||||
|
||||
#define destroyobject(objectID) \
|
||||
0x19, objectID,
|
||||
|
||||
#define completeIfTrue(testval) \
|
||||
0x1A, testval,
|
||||
|
||||
#define failIfTrue(testval) \
|
||||
0x1B, testVal,
|
||||
|
||||
#define collectobject(objecttagID) \
|
||||
0x1C, objecttagID,
|
||||
|
||||
#define depositobject(objecttagID) \
|
||||
0x1D, objecttagID,
|
||||
|
||||
#define photographobject(objecttagID) \
|
||||
0x1E, objecttagID, 0x0, 0x0,
|
||||
|
||||
#define null() \
|
||||
0x1F,
|
||||
|
||||
#define enterroom(presetinroom) \
|
||||
0x20, presetinroom, 0x0, 0x0,
|
||||
|
||||
#define depositobjectinroom(itemID,presetinroom) \
|
||||
0x21, itemID, presetinroom, 0x0, 0x0,
|
||||
|
||||
#define copy_item()
|
||||
0x22,
|
||||
|
||||
#define watch_objective(menuOption, textID) \
|
||||
0x23, menuOption, textID, 0x0,
|
||||
|
||||
#define gas(scale, state, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c) \
|
||||
_generic_object(scale, state, 0x24, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c),
|
||||
|
||||
#define renamefunction(numtargetobjectsaway, invValToAlter, watchMainTop, watchMainBottom, invSelName, onDefaultPickup, interactTextID, field_0x20, field_0x24) \
|
||||
0x25, numtargetobjectsaway, invValToAlter, watchMainTop, watchMainBottom, invSelName, onDefaultPickup, interactTextID, field_0x20, field_0x24,
|
||||
|
||||
#define lock_door(lockedptr, lockptr) \
|
||||
0x26, lockedptr, lockptr, 0x0,
|
||||
|
||||
#define wheeledvehicle() \
|
||||
_TODO(0x27),
|
||||
|
||||
#define aircraft() \
|
||||
_TODO(0x28),
|
||||
|
||||
#define unknown29() \
|
||||
0x29,
|
||||
|
||||
#define glass(scale, state, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c) \
|
||||
_generic_object(scale, state, 0x2A, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c),
|
||||
|
||||
#define safe() \
|
||||
_TODO(0x2B),
|
||||
|
||||
#define safeitem(objectptr, safeptr, safedoorptr) \
|
||||
0x2C, objectptr, safeptr, safedoorptr, 0x0,
|
||||
|
||||
#define tank() \
|
||||
_TODO(0x2D),
|
||||
|
||||
#define cutscene_coord(xcoord, ycoord, zcoord, latrot, vertrot, illum_preset) \
|
||||
0x2E, xcoord, ycoord, zcoord, latrot, vertrot, illum_preset,
|
||||
|
||||
#define tintedglass(scale, state, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c, dist_fullillum, dist_vis, field_0x88, field_0x8c, field_0x90) \
|
||||
_generic_object(scale, state, 0x2A, objectID, presetID, flags1, flags2, ptrPOSData, ptrObjInstanceController, u18, u1c, u20, u24, u28, u2c, u30, u34, u38, u3c, u40, u44, u48, u4c, u50, u54, xPOS, yPOS, zPOS, bitflags, ptrCollisionblock, u6c, u70, health, maxhealth, u78, u7c), \
|
||||
dist_fullillum, dist_vis, field_0x88, field_0x8c, field_0x90,
|
||||
|
||||
#define endprops() \
|
||||
0x30,
|
||||
//endprops
|
||||
|
||||
//introblock
|
||||
#define spawnpoint(u4, u8) \
|
||||
0x0, u4, u8,
|
||||
|
||||
#define startweapon(rightgun, leftgun, setnum) \
|
||||
0x1, rightgun, leftgun, setnum,
|
||||
|
||||
#define startammo(type, qty, set) \
|
||||
0x2, type, qty, set,
|
||||
|
||||
#define swirlintrocam(u1, x, y, z, l, r, u2) \
|
||||
0x3, u1, x, y, z, l, r, u2,
|
||||
|
||||
#define introcam(aniNum) \
|
||||
0x4, aniNum,
|
||||
|
||||
#define cuff(cuffID) \
|
||||
0x5, cuffID,
|
||||
|
||||
#define fixedcam(x, y, z, l, v, u1, t1, t2, c) \
|
||||
0x6, x, y, z, l, v, u1, t1, t2, c,
|
||||
|
||||
#define watchtime(h, m) \
|
||||
0x7, h, m,
|
||||
|
||||
#define credits() \
|
||||
0x8,
|
||||
|
||||
#define endintro() \
|
||||
0x9
|
||||
//endintroblock
|
||||
|
||||
|
||||
|
||||
#endif
|
Binary file not shown.
Binary file not shown.
44
ge007.e.ld
44
ge007.e.ld
|
@ -77,7 +77,7 @@ SECTIONS
|
|||
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/motor.o (.text);
|
||||
build/e/src/rmon.o (.text);
|
||||
|
||||
build/e/src/libultra/osPiRawStartDma.o (.text);
|
||||
|
@ -125,7 +125,7 @@ SECTIONS
|
|||
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/bcopy.o (.text);
|
||||
build/e/src/libultra/guPerspective.o (.text);
|
||||
build/e/src/libultra/Mtx.o (.text);
|
||||
build/e/src/libultra/__osGetCurrFaultedThread.o (.text);
|
||||
|
@ -182,8 +182,8 @@ SECTIONS
|
|||
_rarezipSegmentStart = ADDR(.rarezip);
|
||||
_rarezipSegmentRomStart = _cdataSegmentRomEnd;
|
||||
.rarezip 0x70200000 : AT(_rarezipSegmentRomStart) {
|
||||
build/e/src/rarezip/rarezip.o (.text);
|
||||
build/e/src/rarezip/rarezip.o (.data);
|
||||
build/e/src/inflate/inflate.o (.text);
|
||||
build/e/src/inflate/inflate.o (.data);
|
||||
}
|
||||
_rarezipSegmentEnd = ADDR(.rarezip) + SIZEOF(.rarezip);
|
||||
_rarezipSegmentRomEnd = _rarezipSegmentRomStart + SIZEOF(.rarezip);
|
||||
|
@ -254,7 +254,7 @@ SECTIONS
|
|||
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/matrixmath.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);
|
||||
|
@ -269,7 +269,7 @@ SECTIONS
|
|||
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/bondinv.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);
|
||||
|
@ -295,7 +295,7 @@ SECTIONS
|
|||
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/ramromreplay.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);
|
||||
|
@ -3104,7 +3104,7 @@ SECTIONS
|
|||
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/motor.o (.data);
|
||||
build/e/src/rmon.o (.data);
|
||||
|
||||
build/e/src/libultra/osPiRawStartDma.o (.data);
|
||||
|
@ -3152,7 +3152,7 @@ SECTIONS
|
|||
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/bcopy.o (.data);
|
||||
build/e/src/libultra/guPerspective.o (.data);
|
||||
build/e/src/libultra/Mtx.o (.data);
|
||||
build/e/src/libultra/__osGetCurrFaultedThread.o (.data);
|
||||
|
@ -3224,7 +3224,7 @@ SECTIONS
|
|||
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/motor.o (.rodata);
|
||||
build/e/src/rmon.o (.rodata);
|
||||
|
||||
build/e/src/libultra/osPiRawStartDma.o (.rodata);
|
||||
|
@ -3272,7 +3272,7 @@ SECTIONS
|
|||
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/bcopy.o (.rodata);
|
||||
build/e/src/libultra/guPerspective.o (.rodata);
|
||||
build/e/src/libultra/Mtx.o (.rodata);
|
||||
build/e/src/libultra/__osGetCurrFaultedThread.o (.rodata);
|
||||
|
@ -3369,7 +3369,7 @@ SECTIONS
|
|||
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/matrixmath.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);
|
||||
|
@ -3384,7 +3384,7 @@ SECTIONS
|
|||
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/bondinv.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);
|
||||
|
@ -3410,7 +3410,7 @@ SECTIONS
|
|||
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/ramromreplay.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);
|
||||
|
@ -3491,7 +3491,7 @@ SECTIONS
|
|||
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/matrixmath.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);
|
||||
|
@ -3506,7 +3506,7 @@ SECTIONS
|
|||
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/bondinv.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);
|
||||
|
@ -3532,7 +3532,7 @@ SECTIONS
|
|||
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/ramromreplay.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);
|
||||
|
@ -3597,7 +3597,7 @@ SECTIONS
|
|||
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/motor.o (.bss);
|
||||
build/e/src/rmon.o (.bss);
|
||||
|
||||
build/e/src/libultra/osPiRawStartDma.o (.bss);
|
||||
|
@ -3645,7 +3645,7 @@ SECTIONS
|
|||
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/bcopy.o (.bss);
|
||||
build/e/src/libultra/guPerspective.o (.bss);
|
||||
build/e/src/libultra/Mtx.o (.bss);
|
||||
build/e/src/libultra/__osGetCurrFaultedThread.o (.bss);
|
||||
|
@ -3742,7 +3742,7 @@ SECTIONS
|
|||
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/matrixmath.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);
|
||||
|
@ -3757,7 +3757,7 @@ SECTIONS
|
|||
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/bondinv.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);
|
||||
|
@ -3783,7 +3783,7 @@ SECTIONS
|
|||
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/ramromreplay.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);
|
||||
|
|
1058
ge007.j.ld
1058
ge007.j.ld
File diff suppressed because it is too large
Load Diff
653
ge007.ld
653
ge007.ld
|
@ -1,653 +0,0 @@
|
|||
/*OUTPUT_FORMAT ("elf32-bigmips")*/
|
||||
OUTPUT_ARCH (mips)
|
||||
|
||||
#define BEGIN_SEG(name, addr) \
|
||||
_##name##SegmentStart = ADDR(.name); \
|
||||
_##name##SegmentRomStart = __romPos; \
|
||||
.name addr : AT(__romPos)
|
||||
|
||||
#define END_SEG(name) \
|
||||
_##name##SegmentEnd = ADDR(.name) + SIZEOF(.name); \
|
||||
_##name##SegmentRomEnd = __romPos + SIZEOF(.name); \
|
||||
__romPos += SIZEOF(.name);
|
||||
|
||||
#define BEGIN_NOLOAD(name) \
|
||||
_##name##SegmentNoloadStart = ADDR(.name.noload); \
|
||||
.name.noload (NOLOAD) :
|
||||
|
||||
#define END_NOLOAD(name) \
|
||||
_##name##SegmentNoloadEnd = ADDR(.name.noload) + SIZEOF(.name.noload);
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
__romPos = 0;
|
||||
|
||||
BEGIN_SEG(boot, 0x04000000)
|
||||
{
|
||||
build/rom_header.o(.text);
|
||||
build/bootcode.o(.text);
|
||||
}
|
||||
END_SEG(boot)
|
||||
|
||||
__ramPos = 400;
|
||||
BEGIN_SEG(code, 0x80000400)
|
||||
{
|
||||
build/_start.o (.text);
|
||||
build/boot.o (.text);
|
||||
build/init.o (.text);
|
||||
build/sched.o (.text);
|
||||
build/osMapTLB.o (.text);
|
||||
build/tlb_manage.o (.text);
|
||||
build/tlb_random.o (.text);
|
||||
build/tlb_resolve.o (.text);
|
||||
build/audi.o (.text);
|
||||
build/speed_graph.o (.text);
|
||||
build/video.o (.text);
|
||||
build/deb.o (.text);
|
||||
build/debug_getlastRA.o (.text);
|
||||
build/ramrom.o (.text);
|
||||
build/boss.o (.text);
|
||||
build/music.o (.text);
|
||||
build/snd.o (.text);
|
||||
build/memp.o (.text);
|
||||
build/mema.o (.text);
|
||||
build/random.o (.text);
|
||||
build/token.o (.text);
|
||||
build/str.o (.text);
|
||||
build/sprintf.o (.text);
|
||||
build/pi.o (.text);
|
||||
build/vi.o (.text);
|
||||
build/debugmenu.o (.text);
|
||||
build/joy.o (.text);
|
||||
build/joy_rumble.o (.text);
|
||||
build/rmon.o (.text);
|
||||
build/libultra/libultra.o (.text);
|
||||
}
|
||||
END_SEG(code)
|
||||
__ramPos += SIZEOF(.code);
|
||||
|
||||
.c_data_dummy __romPos : AT(__romPos) {
|
||||
* (.c_data_dummy);
|
||||
}
|
||||
__romPos += SIZEOF(.c_data_dummy);
|
||||
|
||||
/* (0x70200000, 0x702029BC, 0x701CCA70), // 033590-035F4D [29BD] */
|
||||
BEGIN_SEG(rarezip, 0x70200000)
|
||||
{
|
||||
build/rarezip/rarezip.o (.text);
|
||||
build/rarezip/rarezip.o (.data);
|
||||
}
|
||||
END_SEG(rarezip)
|
||||
|
||||
|
||||
/* (0x7F000000, 0x7F0E2D50, 0x7EFCB4D0), // 034B30-117881 [E2D51] */
|
||||
BEGIN_SEG(game, 0x7F000000)
|
||||
{
|
||||
build/game/initgamedata.o (.text);
|
||||
build/game/initweaponanigroups.o (.text);
|
||||
build/game/initactorpropstuff.o (.text);
|
||||
build/game/initnull_0009D0.o (.text);
|
||||
build/game/initunk_0009E0.o (.text);
|
||||
build/game/initanitable.o (.text);
|
||||
build/game/initunk_000B60.o (.text);
|
||||
build/game/setguscale.o (.text);
|
||||
build/game/initnull_000BC0.o (.text);
|
||||
build/game/initimages.o (.text);
|
||||
build/game/initintromatrices.o (.text);
|
||||
build/game/initmenus.o (.text);
|
||||
build/game/initguards.o (.text);
|
||||
build/game/deb_loadallmodels.o (.text);
|
||||
build/game/initobjects.o (.text);
|
||||
build/game/prop.o (.text);
|
||||
build/game/objective.o (.text);
|
||||
build/game/ejectedcartridges.o (.text);
|
||||
build/game/initBondDATA.o (.text);
|
||||
build/game/initunk_005450.o (.text);
|
||||
build/game/initunk_005520.o (.text);
|
||||
build/game/initcameraandthrown.o (.text);
|
||||
build/game/inititemslots.o (.text);
|
||||
build/game/initBondDATAdefaults.o (.text);
|
||||
build/game/initpathtablesomething.o (.text);
|
||||
build/game/initpathtablelinks.o (.text);
|
||||
build/game/initexplosioncasing.o (.text);
|
||||
build/game/initunk_007180.o (.text);
|
||||
build/game/initunk_007290.o (.text);
|
||||
build/game/initunk_0072B0.o (.text);
|
||||
build/game/initmttex.o (.text);
|
||||
build/game/initunk_0073B0.o (.text);
|
||||
build/game/initunk_007460.o (.text);
|
||||
build/game/cleanup_alarms.o (.text);
|
||||
build/game/cleanup_objects.o (.text);
|
||||
build/game/cleanup_objectives.o (.text);
|
||||
build/game/cleanupSFXRelated.o (.text);
|
||||
build/game/playerstats_007770.o (.text);
|
||||
build/game/unk_007800.o (.text);
|
||||
build/game/unk_007920.o (.text);
|
||||
build/game/null_007970.o (.text);
|
||||
build/game/unk_007980.o (.text);
|
||||
build/game/intro_logos.o (.text);
|
||||
build/game/mainmenu.o (.text);
|
||||
build/game/blood_animation.o (.text);
|
||||
build/game/blood_decrypt.o (.text);
|
||||
build/game/gamefile.o (.text);
|
||||
build/game/chr.o (.text);
|
||||
build/game/chrai.o (.text);
|
||||
build/game/loadobjectmodel.o (.text);
|
||||
build/game/objective_status.o (.text);
|
||||
build/game/sin.o (.text);
|
||||
build/game/unk_057FD0.o (.text);
|
||||
build/game/unk_05A9E0.o (.text);
|
||||
build/game/convertangleusinginverse.o (.text);
|
||||
build/game/unk_05AB70.o (.text);
|
||||
build/game/unk_05ACB0.o (.text);
|
||||
build/game/unk_05AE00.o (.text);
|
||||
build/game/unk_05B1E0.o (.text);
|
||||
build/game/truncf.o (.text);
|
||||
build/game/unk_05C440.o (.text);
|
||||
build/game/bondwalk.o (.text);
|
||||
build/game/objecthandler.o (.text);
|
||||
build/game/othermodemicrocode.o (.text);
|
||||
build/game/bond.o (.text);
|
||||
build/game/unk_08DBB0.o (.text);
|
||||
build/game/debugmenu_08FE00.o (.text);
|
||||
build/game/unk_091080.o (.text);
|
||||
build/game/cheat_buttons.o (.text);
|
||||
build/game/unk_092890.o (.text);
|
||||
build/game/unk_092E50.o (.text);
|
||||
build/game/unk_093880.o (.text);
|
||||
build/game/unk_09B600.o (.text);
|
||||
build/game/unk_09B740.o (.text);
|
||||
build/game/unk_09B7A0.o (.text);
|
||||
build/game/unk_09C250.o (.text);
|
||||
build/game/unk_0A1DA0.o (.text);
|
||||
build/game/watch.o (.text);
|
||||
build/game/textrelated.o (.text);
|
||||
build/game/stan.o (.text);
|
||||
build/game/unk_0B3200.o (.text);
|
||||
build/game/bg.o (.text);
|
||||
build/game/fog.o (.text);
|
||||
build/game/lightfixture.o (.text);
|
||||
build/game/unk_0BC530.o (.text);
|
||||
build/game/ob.o (.text);
|
||||
build/game/dyn.o (.text);
|
||||
build/game/lvl.o (.text);
|
||||
build/game/unk_0C0A70.o (.text);
|
||||
build/game/mp_music.o (.text);
|
||||
build/game/lvl_text.o (.text);
|
||||
build/game/mp_watch.o (.text);
|
||||
build/game/radar.o (.text);
|
||||
build/game/mp_weapon.o (.text);
|
||||
build/game/image.o (.text);
|
||||
build/game/image_bank.o (.text);
|
||||
build/game/unk_0CC4C0.o (.text);
|
||||
build/game/decompress.o (.text);
|
||||
build/game/zlib.o (.text);
|
||||
build/game/rsp.o (.text);
|
||||
build/game/indy_comms.o (.text);
|
||||
build/game/indy_commands.o (.text);
|
||||
build/game/game_debug.o (.text);
|
||||
build/game/compiletime.o (.text);
|
||||
build/game/unk_0D1AC0.o (.text);
|
||||
build/game/viewport.o (.text);
|
||||
build/game/music_0D2720.o (.text);
|
||||
build/game/spectrum.o (.text);
|
||||
}
|
||||
END_SEG(GAME)
|
||||
|
||||
.romfiles 0x117880 : AT(__romPos) {
|
||||
* (.romfiles);
|
||||
|
||||
* (.ramrom);
|
||||
|
||||
* (.font);
|
||||
|
||||
* (.music);
|
||||
|
||||
* (.musiccompressed);
|
||||
}
|
||||
__romPos += SIZEOF(.romfiles);
|
||||
|
||||
.ob_seg 0x438660 : AT(__romPos) {
|
||||
* (.ob_seg);
|
||||
}
|
||||
__romPos += SIZEOF(.ob_seg);
|
||||
|
||||
.images : AT(__romPos) {
|
||||
* (.images);
|
||||
}
|
||||
__romPos += SIZEOF(.ob_seg);
|
||||
|
||||
__csegtempPos = 0xC00000;
|
||||
__ramPos += 0x80000000;
|
||||
.csegment __ramPos : AT(__csegtempPos){
|
||||
build/rspboot.o (.text);
|
||||
build/gspboot.o (.text);
|
||||
build/aspboot.o (.text);
|
||||
build/boot.o (.data);
|
||||
build/init.o (.data);
|
||||
build/sched.o (.data);
|
||||
build/osMapTLB.o (.data);
|
||||
build/tlb_manage.o (.data);
|
||||
build/tlb_random.o (.data);
|
||||
build/tlb_resolve.o (.data);
|
||||
build/audi.o (.data);
|
||||
build/speed_graph.o (.data);
|
||||
build/video.o (.data);
|
||||
build/deb.o (.data);
|
||||
build/debug_getlastRA.o (.data);
|
||||
build/ramrom.o (.data);
|
||||
build/boss.o (.data);
|
||||
build/music.o (.data);
|
||||
build/snd.o (.data);
|
||||
build/memp.o (.data);
|
||||
build/mema.o (.data);
|
||||
build/random.o (.data);
|
||||
build/token.o (.data);
|
||||
build/str.o (.data);
|
||||
build/sprintf.o (.data);
|
||||
build/pi.o (.data);
|
||||
build/vi.o (.data);
|
||||
build/debugmenu.o (.data);
|
||||
build/joy.o (.data);
|
||||
build/joy_rumble.o (.data);
|
||||
build/rmon.o (.data);
|
||||
build/libultra/libultra.o (.data);
|
||||
build/boot.o (.rodata);
|
||||
build/init.o (.rodata);
|
||||
build/sched.o (.rodata);
|
||||
build/osMapTLB.o (.rodata);
|
||||
build/tlb_manage.o (.rodata);
|
||||
build/tlb_random.o (.rodata);
|
||||
build/tlb_resolve.o (.rodata);
|
||||
build/audi.o (.rodata);
|
||||
build/speed_graph.o (.rodata);
|
||||
build/video.o (.rodata);
|
||||
build/deb.o (.rodata);
|
||||
build/debug_getlastRA.o (.rodata);
|
||||
build/ramrom.o (.rodata);
|
||||
build/boss.o (.rodata);
|
||||
build/music.o (.rodata);
|
||||
build/snd.o (.rodata);
|
||||
build/memp.o (.rodata);
|
||||
build/mema.o (.rodata);
|
||||
build/random.o (.rodata);
|
||||
build/token.o (.rodata);
|
||||
build/str.o (.rodata);
|
||||
build/sprintf.o (.rodata);
|
||||
build/pi.o (.rodata);
|
||||
build/vi.o (.rodata);
|
||||
build/debugmenu.o (.rodata);
|
||||
build/joy.o (.rodata);
|
||||
build/joy_rumble.o (.rodata);
|
||||
build/rmon.o (.rodata);
|
||||
build/libultra/libultra.o (.rodata);
|
||||
build/game/initgamedata.o (.data);
|
||||
build/game/initweaponanigroups.o (.data);
|
||||
build/game/initactorpropstuff.o (.data);
|
||||
build/game/initnull_0009D0.o (.data);
|
||||
build/game/initunk_0009E0.o (.data);
|
||||
build/game/initanitable.o (.data);
|
||||
build/game/initunk_000B60.o (.data);
|
||||
build/game/setguscale.o (.data);
|
||||
build/game/initnull_000BC0.o (.data);
|
||||
build/game/initimages.o (.data);
|
||||
build/game/initintromatrices.o (.data);
|
||||
build/game/initmenus.o (.data);
|
||||
build/game/initguards.o (.data);
|
||||
build/game/deb_loadallmodels.o (.data);
|
||||
build/game/initobjects.o (.data);
|
||||
build/game/prop.o (.data);
|
||||
build/game/objective.o (.data);
|
||||
build/game/ejectedcartridges.o (.data);
|
||||
build/game/initBondDATA.o (.data);
|
||||
build/game/initunk_005450.o (.data);
|
||||
build/game/initunk_005520.o (.data);
|
||||
build/game/initcameraandthrown.o (.data);
|
||||
build/game/inititemslots.o (.data);
|
||||
build/game/initBondDATAdefaults.o (.data);
|
||||
build/game/initpathtablesomething.o (.data);
|
||||
build/game/initpathtablelinks.o (.data);
|
||||
build/game/initexplosioncasing.o (.data);
|
||||
build/game/initunk_007180.o (.data);
|
||||
build/game/initunk_007290.o (.data);
|
||||
build/game/initunk_0072B0.o (.data);
|
||||
build/game/initmttex.o (.data);
|
||||
build/game/initunk_0073B0.o (.data);
|
||||
build/game/initunk_007460.o (.data);
|
||||
build/game/cleanup_alarms.o (.data);
|
||||
build/game/cleanup_objects.o (.data);
|
||||
build/game/cleanup_objectives.o (.data);
|
||||
build/game/cleanupSFXRelated.o (.data);
|
||||
build/game/playerstats_007770.o (.data);
|
||||
build/game/unk_007800.o (.data);
|
||||
build/game/unk_007920.o (.data);
|
||||
build/game/null_007970.o (.data);
|
||||
build/game/unk_007980.o (.data);
|
||||
build/game/intro_logos.o (.data);
|
||||
build/game/mainmenu.o (.data);
|
||||
build/game/blood_animation.o (.data);
|
||||
build/game/blood_decrypt.o (.data);
|
||||
build/game/gamefile.o (.data);
|
||||
build/game/chr.o (.data);
|
||||
build/game/chrai.o (.data);
|
||||
build/game/loadobjectmodel.o (.data);
|
||||
build/game/objective_status.o (.data);
|
||||
build/game/sin.o (.data);
|
||||
build/game/unk_057FD0.o (.data);
|
||||
build/game/unk_05A9E0.o (.data);
|
||||
build/game/convertangleusinginverse.o (.data);
|
||||
build/game/unk_05AB70.o (.data);
|
||||
build/game/unk_05ACB0.o (.data);
|
||||
build/game/unk_05AE00.o (.data);
|
||||
build/game/unk_05B1E0.o (.data);
|
||||
build/game/truncf.o (.data);
|
||||
build/game/unk_05C440.o (.data);
|
||||
build/game/bondwalk.o (.data);
|
||||
build/game/objecthandler.o (.data);
|
||||
build/game/othermodemicrocode.o (.data);
|
||||
build/game/bond.o (.data);
|
||||
build/game/unk_08DBB0.o (.data);
|
||||
build/game/debugmenu_08FE00.o (.data);
|
||||
build/game/unk_091080.o (.data);
|
||||
build/game/cheat_buttons.o (.data);
|
||||
build/game/unk_092890.o (.data);
|
||||
build/game/unk_092E50.o (.data);
|
||||
build/game/unk_093880.o (.data);
|
||||
build/game/unk_09B600.o (.data);
|
||||
build/game/unk_09B740.o (.data);
|
||||
build/game/unk_09B7A0.o (.data);
|
||||
build/game/unk_09C250.o (.data);
|
||||
build/game/unk_0A1DA0.o (.data);
|
||||
build/game/watch.o (.data);
|
||||
build/game/textrelated.o (.data);
|
||||
build/game/stan.o (.data);
|
||||
build/game/unk_0B3200.o (.data);
|
||||
build/game/bg.o (.data);
|
||||
build/game/fog.o (.data);
|
||||
build/game/lightfixture.o (.data);
|
||||
build/game/unk_0BC530.o (.data);
|
||||
build/game/ob.o (.data);
|
||||
build/game/dyn.o (.data);
|
||||
build/game/lvl.o (.data);
|
||||
build/game/unk_0C0A70.o (.data);
|
||||
build/game/mp_music.o (.data);
|
||||
build/game/lvl_text.o (.data);
|
||||
build/game/mp_watch.o (.data);
|
||||
build/game/radar.o (.data);
|
||||
build/game/mp_weapon.o (.data);
|
||||
build/game/image.o (.data);
|
||||
build/game/image_bank.o (.data);
|
||||
build/game/unk_0CC4C0.o (.data);
|
||||
build/game/decompress.o (.data);
|
||||
build/game/zlib.o (.data);
|
||||
build/game/rsp.o (.data);
|
||||
build/game/indy_comms.o (.data);
|
||||
build/game/indy_commands.o (.data);
|
||||
build/game/game_debug.o (.data);
|
||||
build/game/compiletime.o (.data);
|
||||
build/game/unk_0D1AC0.o (.data);
|
||||
build/game/viewport.o (.data);
|
||||
build/game/music_0D2720.o (.data);
|
||||
build/game/spectrum.o (.data);
|
||||
build/game/initgamedata.o (.rodata);
|
||||
build/game/initweaponanigroups.o (.rodata);
|
||||
build/game/initactorpropstuff.o (.rodata);
|
||||
build/game/initnull_0009D0.o (.rodata);
|
||||
build/game/initunk_0009E0.o (.rodata);
|
||||
build/game/initanitable.o (.rodata);
|
||||
build/game/initunk_000B60.o (.rodata);
|
||||
build/game/setguscale.o (.rodata);
|
||||
build/game/initnull_000BC0.o (.rodata);
|
||||
build/game/initimages.o (.rodata);
|
||||
build/game/initintromatrices.o (.rodata);
|
||||
build/game/initmenus.o (.rodata);
|
||||
build/game/initguards.o (.rodata);
|
||||
build/game/deb_loadallmodels.o (.rodata);
|
||||
build/game/initobjects.o (.rodata);
|
||||
build/game/prop.o (.rodata);
|
||||
build/game/objective.o (.rodata);
|
||||
build/game/ejectedcartridges.o (.rodata);
|
||||
build/game/initBondDATA.o (.rodata);
|
||||
build/game/initunk_005450.o (.rodata);
|
||||
build/game/initunk_005520.o (.rodata);
|
||||
build/game/initcameraandthrown.o (.rodata);
|
||||
build/game/inititemslots.o (.rodata);
|
||||
build/game/initBondDATAdefaults.o (.rodata);
|
||||
build/game/initpathtablesomething.o (.rodata);
|
||||
build/game/initpathtablelinks.o (.rodata);
|
||||
build/game/initexplosioncasing.o (.rodata);
|
||||
build/game/initunk_007180.o (.rodata);
|
||||
build/game/initunk_007290.o (.rodata);
|
||||
build/game/initunk_0072B0.o (.rodata);
|
||||
build/game/initmttex.o (.rodata);
|
||||
build/game/initunk_0073B0.o (.rodata);
|
||||
build/game/initunk_007460.o (.rodata);
|
||||
build/game/cleanup_alarms.o (.rodata);
|
||||
build/game/cleanup_objects.o (.rodata);
|
||||
build/game/cleanup_objectives.o (.rodata);
|
||||
build/game/cleanupSFXRelated.o (.rodata);
|
||||
build/game/playerstats_007770.o (.rodata);
|
||||
build/game/unk_007800.o (.rodata);
|
||||
build/game/unk_007920.o (.rodata);
|
||||
build/game/null_007970.o (.rodata);
|
||||
build/game/unk_007980.o (.rodata);
|
||||
build/game/intro_logos.o (.rodata);
|
||||
build/game/mainmenu.o (.rodata);
|
||||
build/game/blood_animation.o (.rodata);
|
||||
build/game/blood_decrypt.o (.rodata);
|
||||
build/game/gamefile.o (.rodata);
|
||||
build/game/chr.o (.rodata);
|
||||
build/game/chrai.o (.rodata);
|
||||
build/game/loadobjectmodel.o (.rodata);
|
||||
build/game/objective_status.o (.rodata);
|
||||
build/game/sin.o (.rodata);
|
||||
build/game/unk_057FD0.o (.rodata);
|
||||
build/game/unk_05A9E0.o (.rodata);
|
||||
build/game/convertangleusinginverse.o (.rodata);
|
||||
build/game/unk_05AB70.o (.rodata);
|
||||
build/game/unk_05ACB0.o (.rodata);
|
||||
build/game/unk_05AE00.o (.rodata);
|
||||
build/game/unk_05B1E0.o (.rodata);
|
||||
build/game/truncf.o (.rodata);
|
||||
build/game/unk_05C440.o (.rodata);
|
||||
build/game/bondwalk.o (.rodata);
|
||||
build/game/objecthandler.o (.rodata);
|
||||
build/game/othermodemicrocode.o (.rodata);
|
||||
build/game/bond.o (.rodata);
|
||||
build/game/unk_08DBB0.o (.rodata);
|
||||
build/game/debugmenu_08FE00.o (.rodata);
|
||||
build/game/unk_091080.o (.rodata);
|
||||
build/game/cheat_buttons.o (.rodata);
|
||||
build/game/unk_092890.o (.rodata);
|
||||
build/game/unk_092E50.o (.rodata);
|
||||
build/game/unk_093880.o (.rodata);
|
||||
build/game/unk_09B600.o (.rodata);
|
||||
build/game/unk_09B740.o (.rodata);
|
||||
build/game/unk_09B7A0.o (.rodata);
|
||||
build/game/unk_09C250.o (.rodata);
|
||||
build/game/unk_0A1DA0.o (.rodata);
|
||||
build/game/watch.o (.rodata);
|
||||
build/game/textrelated.o (.rodata);
|
||||
build/game/stan.o (.rodata);
|
||||
build/game/unk_0B3200.o (.rodata);
|
||||
build/game/bg.o (.rodata);
|
||||
build/game/fog.o (.rodata);
|
||||
build/game/lightfixture.o (.rodata);
|
||||
build/game/unk_0BC530.o (.rodata);
|
||||
build/game/ob.o (.rodata);
|
||||
build/game/dyn.o (.rodata);
|
||||
build/game/lvl.o (.rodata);
|
||||
build/game/unk_0C0A70.o (.rodata);
|
||||
build/game/mp_music.o (.rodata);
|
||||
build/game/lvl_text.o (.rodata);
|
||||
build/game/mp_watch.o (.rodata);
|
||||
build/game/radar.o (.rodata);
|
||||
build/game/mp_weapon.o (.rodata);
|
||||
build/game/image.o (.rodata);
|
||||
build/game/image_bank.o (.rodata);
|
||||
build/game/unk_0CC4C0.o (.rodata);
|
||||
build/game/decompress.o (.rodata);
|
||||
build/game/zlib.o (.rodata);
|
||||
build/game/rsp.o (.rodata);
|
||||
build/game/indy_comms.o (.rodata);
|
||||
build/game/indy_commands.o (.rodata);
|
||||
build/game/game_debug.o (.rodata);
|
||||
build/game/compiletime.o (.rodata);
|
||||
build/game/unk_0D1AC0.o (.rodata);
|
||||
build/game/viewport.o (.rodata);
|
||||
build/game/music_0D2720.o (.rodata);
|
||||
build/game/spectrum.o (.rodata);
|
||||
build/gspboot.o (.data);
|
||||
build/aspboot.o (.data);
|
||||
}
|
||||
__ramPos += SIZEOF(.csegment);
|
||||
__csegtempPos += SIZEOF(.csegment);
|
||||
.bss __ramPos : AT(__csegtempPos){
|
||||
build/boot.o (.bss);
|
||||
build/init.o (.bss);
|
||||
build/sched.o (.bss);
|
||||
build/osMapTLB.o (.bss);
|
||||
build/tlb_manage.o (.bss);
|
||||
build/tlb_random.o (.bss);
|
||||
build/tlb_resolve.o (.bss);
|
||||
build/audi.o (.bss);
|
||||
build/speed_graph.o (.bss);
|
||||
build/video.o (.bss);
|
||||
build/deb.o (.bss);
|
||||
build/debug_getlastRA.o (.bss);
|
||||
build/ramrom.o (.bss);
|
||||
build/boss.o (.bss);
|
||||
build/music.o (.bss);
|
||||
build/snd.o (.bss);
|
||||
build/memp.o (.bss);
|
||||
build/mema.o (.bss);
|
||||
build/random.o (.bss);
|
||||
build/token.o (.bss);
|
||||
build/str.o (.bss);
|
||||
build/sprintf.o (.bss);
|
||||
build/pi.o (.bss);
|
||||
build/vi.o (.bss);
|
||||
build/debugmenu.o (.bss);
|
||||
build/joy.o (.bss);
|
||||
build/joy_rumble.o (.bss);
|
||||
build/rmon.o (.bss);
|
||||
build/libultra/libultra.o (.bss);
|
||||
build/game/initgamedata.o (.bss);
|
||||
build/game/initweaponanigroups.o (.bss);
|
||||
build/game/initactorpropstuff.o (.bss);
|
||||
build/game/initnull_0009D0.o (.bss);
|
||||
build/game/initunk_0009E0.o (.bss);
|
||||
build/game/initanitable.o (.bss);
|
||||
build/game/initunk_000B60.o (.bss);
|
||||
build/game/setguscale.o (.bss);
|
||||
build/game/initnull_000BC0.o (.bss);
|
||||
build/game/initimages.o (.bss);
|
||||
build/game/initintromatrices.o (.bss);
|
||||
build/game/initmenus.o (.bss);
|
||||
build/game/initguards.o (.bss);
|
||||
build/game/deb_loadallmodels.o (.bss);
|
||||
build/game/initobjects.o (.bss);
|
||||
build/game/prop.o (.bss);
|
||||
build/game/objective.o (.bss);
|
||||
build/game/ejectedcartridges.o (.bss);
|
||||
build/game/initBondDATA.o (.bss);
|
||||
build/game/initunk_005450.o (.bss);
|
||||
build/game/initunk_005520.o (.bss);
|
||||
build/game/initcameraandthrown.o (.bss);
|
||||
build/game/inititemslots.o (.bss);
|
||||
build/game/initBondDATAdefaults.o (.bss);
|
||||
build/game/initpathtablesomething.o (.bss);
|
||||
build/game/initpathtablelinks.o (.bss);
|
||||
build/game/initexplosioncasing.o (.bss);
|
||||
build/game/initunk_007180.o (.bss);
|
||||
build/game/initunk_007290.o (.bss);
|
||||
build/game/initunk_0072B0.o (.bss);
|
||||
build/game/initmttex.o (.bss);
|
||||
build/game/initunk_0073B0.o (.bss);
|
||||
build/game/initunk_007460.o (.bss);
|
||||
build/game/cleanup_alarms.o (.bss);
|
||||
build/game/cleanup_objects.o (.bss);
|
||||
build/game/cleanup_objectives.o (.bss);
|
||||
build/game/cleanupSFXRelated.o (.bss);
|
||||
build/game/playerstats_007770.o (.bss);
|
||||
build/game/unk_007800.o (.bss);
|
||||
build/game/unk_007920.o (.bss);
|
||||
build/game/null_007970.o (.bss);
|
||||
build/game/unk_007980.o (.bss);
|
||||
build/game/intro_logos.o (.bss);
|
||||
build/game/mainmenu.o (.bss);
|
||||
build/game/blood_animation.o (.bss);
|
||||
build/game/blood_decrypt.o (.bss);
|
||||
build/game/gamefile.o (.bss);
|
||||
build/game/chr.o (.bss);
|
||||
build/game/chrai.o (.bss);
|
||||
build/game/loadobjectmodel.o (.bss);
|
||||
build/game/objective_status.o (.bss);
|
||||
build/game/sin.o (.bss);
|
||||
build/game/unk_057FD0.o (.bss);
|
||||
build/game/unk_05A9E0.o (.bss);
|
||||
build/game/convertangleusinginverse.o (.bss);
|
||||
build/game/unk_05AB70.o (.bss);
|
||||
build/game/unk_05ACB0.o (.bss);
|
||||
build/game/unk_05AE00.o (.bss);
|
||||
build/game/unk_05B1E0.o (.bss);
|
||||
build/game/truncf.o (.bss);
|
||||
build/game/unk_05C440.o (.bss);
|
||||
build/game/bondwalk.o (.bss);
|
||||
build/game/objecthandler.o (.bss);
|
||||
build/game/othermodemicrocode.o (.bss);
|
||||
build/game/bond.o (.bss);
|
||||
build/game/unk_08DBB0.o (.bss);
|
||||
build/game/debugmenu_08FE00.o (.bss);
|
||||
build/game/unk_091080.o (.bss);
|
||||
build/game/cheat_buttons.o (.bss);
|
||||
build/game/unk_092890.o (.bss);
|
||||
build/game/unk_092E50.o (.bss);
|
||||
build/game/unk_093880.o (.bss);
|
||||
build/game/unk_09B600.o (.bss);
|
||||
build/game/unk_09B740.o (.bss);
|
||||
build/game/unk_09B7A0.o (.bss);
|
||||
build/game/unk_09C250.o (.bss);
|
||||
build/game/unk_0A1DA0.o (.bss);
|
||||
build/game/watch.o (.bss);
|
||||
build/game/textrelated.o (.bss);
|
||||
build/game/stan.o (.bss);
|
||||
build/game/unk_0B3200.o (.bss);
|
||||
build/game/bg.o (.bss);
|
||||
build/game/fog.o (.bss);
|
||||
build/game/lightfixture.o (.bss);
|
||||
build/game/unk_0BC530.o (.bss);
|
||||
build/game/ob.o (.bss);
|
||||
build/game/dyn.o (.bss);
|
||||
build/game/lvl.o (.bss);
|
||||
build/game/unk_0C0A70.o (.bss);
|
||||
build/game/mp_music.o (.bss);
|
||||
build/game/lvl_text.o (.bss);
|
||||
build/game/mp_watch.o (.bss);
|
||||
build/game/radar.o (.bss);
|
||||
build/game/mp_weapon.o (.bss);
|
||||
build/game/image.o (.bss);
|
||||
build/game/image_bank.o (.bss);
|
||||
build/game/unk_0CC4C0.o (.bss);
|
||||
build/game/decompress.o (.bss);
|
||||
build/game/zlib.o (.bss);
|
||||
build/game/rsp.o (.bss);
|
||||
build/game/indy_comms.o (.bss);
|
||||
build/game/indy_commands.o (.bss);
|
||||
build/game/game_debug.o (.bss);
|
||||
build/game/compiletime.o (.bss);
|
||||
build/game/unk_0D1AC0.o (.bss);
|
||||
build/game/viewport.o (.bss);
|
||||
build/game/music_0D2720.o (.bss);
|
||||
build/game/spectrum.o (.bss);
|
||||
}
|
||||
__ramPos += SIZEOF(.csegment);
|
||||
__csegtempPos += SIZEOF(.csegment);
|
||||
|
||||
|
||||
/*move em to end, out of the way*/
|
||||
/DISCARD/ : {
|
||||
* (.MIPS.abiflags);
|
||||
* (.musicdecompressed);
|
||||
}
|
||||
}
|
1051
ge007.u.ld
1051
ge007.u.ld
File diff suppressed because it is too large
Load Diff
|
@ -1,137 +0,0 @@
|
|||
### Default target ###
|
||||
|
||||
default: all
|
||||
|
||||
### Build Options ###
|
||||
# Version of the game to build
|
||||
VERSION ?= sgi
|
||||
# If COMPARE is 1, check the output sha1sum when building 'all'
|
||||
COMPARE ?= 1
|
||||
FINAL ?= YES
|
||||
|
||||
ifeq ($(VERSION),gcc)
|
||||
VERSION_CFLAGS := -DVERSION_GCC=1
|
||||
VERSION_ASFLAGS := --defsym VERSION_GCC=1
|
||||
TARGET := libgultra
|
||||
else
|
||||
VERSION_CFLAGS := -DVERSION_SGI=1
|
||||
VERSION_ASFLAGS := --defsym VERSION_SGI=1
|
||||
TARGET := libultra
|
||||
endif
|
||||
|
||||
ifeq ($(FINAL),YES)
|
||||
FINAL_CFLAGS := -DFINAL=1
|
||||
FINAL_ASFLAGS := --defsym FINAL=1
|
||||
TARGET_TYPE := _rom
|
||||
else
|
||||
FINAL_CFLAGS := -DDEBUG=1
|
||||
FINAL_ASFLAGS := --defsym DEBUG=1
|
||||
TARGET_TYPE :=
|
||||
endif
|
||||
|
||||
################ Target Executable and Sources ###############
|
||||
|
||||
# BUILD_DIR is location where all build artifacts are placed
|
||||
BUILD_DIR_BASE := ../build/libultra
|
||||
BUILD_DIR := $(BUILD_DIR_BASE)/$(VERSION)
|
||||
|
||||
|
||||
LIBULTRA := ../lib/$(TARGET)$(TARGET_TYPE).a
|
||||
|
||||
|
||||
# Directories containing source files
|
||||
ULTRA_SRC_DIRS := lib/src lib/src/math
|
||||
ULTRA_ASM_DIRS := lib/asm
|
||||
|
||||
MIPSISET := -mips2 -32
|
||||
OPT_FLAGS := -O2
|
||||
|
||||
|
||||
# Source code files
|
||||
ULTRA_C_FILES := $(foreach dir,$(ULTRA_SRC_DIRS),$(wildcard $(dir)/*.c))
|
||||
ULTRA_S_FILES := $(foreach dir,$(ULTRA_ASM_DIRS),$(wildcard $(dir)/*.s))
|
||||
|
||||
|
||||
# Object files
|
||||
ULTRA_O_FILES := $(foreach file,$(ULTRA_S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \
|
||||
$(foreach file,$(ULTRA_C_FILES),$(BUILD_DIR)/$(file:.c=.o))
|
||||
|
||||
IRIX_ROOT := ../tools/irix/root
|
||||
QEMU_IRIX := ../tools/irix/qemu-irix
|
||||
CROSS := mips-linux-gnu-
|
||||
AS := $(CROSS)as
|
||||
CC := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/cc
|
||||
CPP := cpp -P
|
||||
LD := $(CROSS)ld
|
||||
AR := $(CROSS)ar
|
||||
OBJDUMP := $(CROSS)objdump
|
||||
OBJCOPY := $(CROSS)objcopy
|
||||
|
||||
|
||||
ASFLAGS := -march=vr4300 -mabi=32 -I include -I $(BUILD_DIR) $(VERSION_ASFLAGS)
|
||||
CFLAGS = -Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm $(OPT_FLAGS) -signed -I include -I include/ultra64 $(VERSION_CFLAGS) $(MIPSISET)
|
||||
|
||||
|
||||
####################### Other Tools #########################
|
||||
|
||||
# N64 tools
|
||||
TOOLS_DIR = tools
|
||||
|
||||
###################### Dependency Check #####################
|
||||
|
||||
BINUTILS_VER_MAJOR := $(shell $(LD) --version | grep ^GNU | sed 's/^.* //; s/\..*//g')
|
||||
BINUTILS_VER_MINOR := $(shell $(LD) --version | grep ^GNU | sed 's/^[^.]*\.//; s/\..*//g')
|
||||
BINUTILS_DEPEND := $(shell expr $(BINUTILS_VER_MAJOR) \>= 2 \& $(BINUTILS_VER_MINOR) \>= 27)
|
||||
ifeq ($(BINUTILS_DEPEND),0)
|
||||
$(error binutils version 2.27 required, version $(BINUTILS_VER_MAJOR).$(BINUTILS_VER_MINOR) detected)
|
||||
endif
|
||||
|
||||
ifndef QEMU_IRIX
|
||||
$(error env variable QEMU_IRIX should point to the qemu-mips binary)
|
||||
endif
|
||||
|
||||
######################## Targets #############################
|
||||
|
||||
all: tools/patch_libultra_math libultra
|
||||
|
||||
clean:
|
||||
$(RM) -r $(LIBULTRA) $(BUILD_DIR_BASE) tools/patch_libultra_math
|
||||
|
||||
libultra: $(LIBULTRA)
|
||||
|
||||
|
||||
# Make sure build directory exists before compiling objects
|
||||
$(BUILD_DIR):
|
||||
mkdir -p $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(ULTRA_SRC_DIRS) $(ULTRA_ASM_DIRS))
|
||||
|
||||
$(ULTRA_O_FILES): | $(BUILD_DIR)
|
||||
|
||||
# Source code
|
||||
$(BUILD_DIR)/lib/src/%.o: OPT_FLAGS :=
|
||||
$(BUILD_DIR)/lib/src/math/ll%.o: MIPSISET := -mips3 -32
|
||||
$(BUILD_DIR)/lib/src/math/%.o: OPT_FLAGS := -O2
|
||||
$(BUILD_DIR)/lib/src/math/ll%.o: OPT_FLAGS :=
|
||||
$(BUILD_DIR)/lib/src/ldiv.o: OPT_FLAGS := -O2
|
||||
$(BUILD_DIR)/lib/src/string.o: OPT_FLAGS := -O2
|
||||
$(BUILD_DIR)/lib/src/gu%.o: OPT_FLAGS := -O3
|
||||
$(BUILD_DIR)/lib/src/al%.o: OPT_FLAGS := -O3
|
||||
|
||||
tools/patch_libultra_math:
|
||||
make -C tools
|
||||
|
||||
$(BUILD_DIR)/lib/src/math/%.o: lib/src/math/%.c
|
||||
$(CC) -c $(CFLAGS) -o $@ $<
|
||||
tools/patch_libultra_math $@ || rm $@
|
||||
|
||||
$(BUILD_DIR)/%.o: %.c
|
||||
$(CC) -c $(CFLAGS) -o $@ $<
|
||||
|
||||
|
||||
$(BUILD_DIR)/%.o: %.s
|
||||
$(AS) $(ASFLAGS) -MD $(BUILD_DIR)/$*.d -o $@ $<
|
||||
|
||||
$(LIBULTRA): $(ULTRA_O_FILES)
|
||||
$(AR) rcs -o $@ $(ULTRA_O_FILES)
|
||||
|
||||
.PHONY: all clean libultra
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
# Assembly Macros
|
||||
|
||||
.macro glabel label
|
||||
.global \label
|
||||
\label:
|
||||
.endm
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
#ifndef _MATH_H_
|
||||
#define _MATH_H_
|
||||
|
||||
#define M_PI 3.14159265358979323846
|
||||
|
||||
float sinf(float);
|
||||
double sin(double);
|
||||
float cosf(float);
|
||||
double cos(double);
|
||||
|
||||
float sqrtf(float);
|
||||
|
||||
#endif
|
|
@ -1,45 +0,0 @@
|
|||
#ifndef _STDARG_H_
|
||||
#define _STDARG_H_
|
||||
|
||||
#include <ultra64.h>
|
||||
|
||||
// When building with GCC, use the official vaarg macros to avoid warnings
|
||||
// and possibly bad codegen.
|
||||
#ifdef __GNUC__
|
||||
#define va_list __builtin_va_list
|
||||
#define va_start __builtin_va_start
|
||||
#define va_arg __builtin_va_arg
|
||||
#define va_end __builtin_va_end
|
||||
#else
|
||||
|
||||
typedef char *va_list;
|
||||
#define _FP 1
|
||||
#define _INT 0
|
||||
#define _STRUCT 2
|
||||
|
||||
#define _VA_FP_SAVE_AREA 0x10
|
||||
#define _VA_ALIGN(p, a) (((unsigned int)(((char *)p) + ((a) > 4 ? (a) : 4) - 1)) & -((a) > 4 ? (a) : 4))
|
||||
#define va_start(vp, parmN) (vp = ((va_list)&parmN + sizeof(parmN)))
|
||||
|
||||
#define __va_stack_arg(list, mode) \
|
||||
( \
|
||||
((list) = (char *)_VA_ALIGN(list, __builtin_alignof(mode)) + \
|
||||
_VA_ALIGN(sizeof(mode), 4)), \
|
||||
(((char *)list) - (_VA_ALIGN(sizeof(mode), 4) - sizeof(mode))))
|
||||
|
||||
#define __va_double_arg(list, mode) \
|
||||
( \
|
||||
(((long)list & 0x1) /* 1 byte aligned? */ \
|
||||
? (list = (char *)((long)list + 7), (char *)((long)list - 6 - _VA_FP_SAVE_AREA)) \
|
||||
: (((long)list & 0x2) /* 2 byte aligned? */ \
|
||||
? (list = (char *)((long)list + 10), (char *)((long)list - 24 - _VA_FP_SAVE_AREA)) \
|
||||
: __va_stack_arg(list, mode))))
|
||||
|
||||
#define va_arg(list, mode) ((mode *)(((__builtin_classof(mode) == _FP && \
|
||||
__builtin_alignof(mode) == sizeof(double)) \
|
||||
? __va_double_arg(list, mode) \
|
||||
: __va_stack_arg(list, mode))))[-1]
|
||||
#define va_end(__list)
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -1,19 +0,0 @@
|
|||
#ifndef _STDLIB_H_
|
||||
#define _STDLIB_H_
|
||||
|
||||
typedef struct lldiv_t
|
||||
{
|
||||
long long quot;
|
||||
long long rem;
|
||||
} lldiv_t;
|
||||
|
||||
typedef struct ldiv_t
|
||||
{
|
||||
long quot;
|
||||
long rem;
|
||||
} ldiv_t;
|
||||
|
||||
lldiv_t lldiv(long long, long long);
|
||||
ldiv_t ldiv(long, long);
|
||||
|
||||
#endif
|
|
@ -1,8 +0,0 @@
|
|||
#ifndef _STRING_H_
|
||||
#define _STRING_H_
|
||||
#include "ultra64/types.h"
|
||||
void* memcpy(void*, const void*, size_t);
|
||||
size_t strlen(const u8 *str);
|
||||
const u8 *strchr(const u8 *str, u32 ch);
|
||||
|
||||
#endif
|
|
@ -1,29 +0,0 @@
|
|||
#ifndef _ULTRA64_H_
|
||||
#define _ULTRA64_H_
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include <ultra64/types.h>
|
||||
#include <ultra64/interrupt.h>
|
||||
#include <ultra64/os_misc.h>
|
||||
#include <ultra64/rdp.h>
|
||||
#include <ultra64/thread.h>
|
||||
#include <ultra64/time.h>
|
||||
#include <ultra64/message.h>
|
||||
#include <ultra64/os_cont.h>
|
||||
#include <ultra64/tlb.h>
|
||||
#include <ultra64/sptask.h>
|
||||
#include <ultra64/ucode.h>
|
||||
#include <ultra64/cache.h>
|
||||
#include <ultra64/vi.h>
|
||||
#include <ultra64/pi.h>
|
||||
#include <ultra64/os_internal.h>
|
||||
#include <ultra64/gbi.h>
|
||||
#include <ultra64/eeprom.h>
|
||||
#include <ultra64/libc.h>
|
||||
#include <ultra64/gu.h>
|
||||
#include <ultra64/os_ai.h>
|
||||
#include <ultra64/libaudio.h>
|
||||
#include <ultra64/libultra.h>
|
||||
|
||||
#endif
|
|
@ -1,11 +0,0 @@
|
|||
#ifndef _ULTRA64_CACHE_H_
|
||||
#define _ULTRA64_CACHE_H_
|
||||
|
||||
/* Functions */
|
||||
|
||||
void osInvalICache(void *vaddr, s32 nbytes);
|
||||
void osInvalDCache(void *vaddr, s32 nbytes);
|
||||
void osWritebackDCache(void *vaddr, s32 nbytes);
|
||||
void osWritebackDCacheAll(void);
|
||||
|
||||
#endif
|
|
@ -1,18 +0,0 @@
|
|||
#ifndef _ULTRA64_EEPROM_H_
|
||||
#define _ULTRA64_EEPROM_H_
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u16 unk00;
|
||||
u16 unk01;
|
||||
} OSEepromUnknownStruct0;
|
||||
|
||||
/* Functions */
|
||||
|
||||
s32 osEepromLongRead(OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes);
|
||||
s32 osEepromLongWrite(OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes);
|
||||
s32 osEepromWrite(OSMesgQueue *mq, u8 address, u8 *buffer);
|
||||
s32 osEepromRead(OSMesgQueue *mq, u8 address, u8 *buffer);
|
||||
s32 osEepromProbe(OSMesgQueue *mq);
|
||||
|
||||
#endif
|
|
@ -1,685 +0,0 @@
|
|||
#ifndef _ULTRA64_GBI_H_
|
||||
#define _ULTRA64_GBI_H_
|
||||
|
||||
/* Types */
|
||||
|
||||
/* Vertex (set up for use with colors) */
|
||||
typedef struct
|
||||
{
|
||||
short ob[3]; /* x, y, z */
|
||||
unsigned short flag;
|
||||
short tc[2]; /* texture coord */
|
||||
unsigned char cn[4]; /* color & alpha */
|
||||
} Vtx_t;
|
||||
|
||||
/* Vertex (set up for use with normals) */
|
||||
typedef struct
|
||||
{
|
||||
short ob[3]; /* x, y, z */
|
||||
unsigned short flag;
|
||||
short tc[2]; /* texture coord */
|
||||
signed char n[3]; /* normal */
|
||||
unsigned char a; /* alpha */
|
||||
} Vtx_tn;
|
||||
|
||||
typedef union
|
||||
{
|
||||
Vtx_t v; /* Use this one for colors */
|
||||
Vtx_tn n; /* Use this one for normals */
|
||||
long long int force_structure_alignment;
|
||||
} Vtx;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
short vscale[4]; /* scale, 2 bits fraction */
|
||||
short vtrans[4]; /* translate, 2 bits fraction */
|
||||
} Vp_t;
|
||||
|
||||
typedef union
|
||||
{
|
||||
Vp_t vp;
|
||||
long long int force_structure_alignment;
|
||||
} Vp;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned int w0;
|
||||
unsigned int w1;
|
||||
} Gwords;
|
||||
|
||||
/* TODO: fill in the rest of the members */
|
||||
typedef union
|
||||
{
|
||||
Gwords words;
|
||||
long long int force_structure_alignment;
|
||||
} Gfx;
|
||||
|
||||
|
||||
#define _SHIFTL(value, shift, size) \
|
||||
((unsigned int) (((unsigned int) (value) & ((1 << size) - 1)) << shift))
|
||||
|
||||
#define G_ON 1
|
||||
#define G_OFF 0
|
||||
|
||||
#define GPACK_RGBA5551(r, g, b, a) \
|
||||
((((r) << 8) & 0xF800) | \
|
||||
(((g) << 3) & 0x07C0) | \
|
||||
(((b) >> 2) & 0x003E) | \
|
||||
((a) & 0x0001))
|
||||
#define GPACK_ZDZ(z, dz) ((z) << 2 | (dz))
|
||||
|
||||
|
||||
#define G_ZBUFFER 0x00000001
|
||||
#define G_TEXTURE_ENABLE 0x00000002
|
||||
#define G_SHADE 0x00000004
|
||||
#define G_SHADING_SMOOTH 0x00000200
|
||||
#define G_CULL_FRONT 0x00001000
|
||||
#define G_CULL_BACK 0x00002000
|
||||
#define G_CULL_BOTH 0x00003000
|
||||
#define G_FOG 0x00010000
|
||||
#define G_LIGHTING 0x00020000
|
||||
#define G_TEXTURE_GEN 0x00040000
|
||||
#define G_TEXTURE_GEN_LINEAR 0x00080000
|
||||
#define G_LOD 0x00100000
|
||||
#define G_CLIPPING 0x00800000
|
||||
|
||||
#define G_IM_FMT_RGBA 0
|
||||
#define G_IM_FMT_YUV 1
|
||||
#define G_IM_FMT_CI 2
|
||||
#define G_IM_FMT_IA 3
|
||||
#define G_IM_FMT_I 4
|
||||
|
||||
#define G_IM_SIZ_4b 0
|
||||
#define G_IM_SIZ_8b 1
|
||||
#define G_IM_SIZ_16b 2
|
||||
#define G_IM_SIZ_32b 3
|
||||
#define G_IM_SIZ_DD 5
|
||||
|
||||
#define G_AC_NONE (0 << 0)
|
||||
#define G_AC_THRESHOLD (1 << 0)
|
||||
#define G_AC_DITHER (3 << 0)
|
||||
|
||||
#define G_ZS_PIXEL (0 << 2)
|
||||
#define G_ZS_PRIM (1 << 2)
|
||||
|
||||
#define G_CD_MAGICSQ (0 << 6)
|
||||
#define G_CD_BAYER (1 << 6)
|
||||
#define G_CD_NOISE (2 << 6)
|
||||
|
||||
#define G_CK_NONE (0 << 8)
|
||||
#define G_CK_KEY (1 << 8)
|
||||
|
||||
#define G_TC_CONV (0 << 9)
|
||||
#define G_TC_FILTCONV (5 << 9)
|
||||
#define G_TC_FILT (6 << 9)
|
||||
|
||||
#define G_TF_POINT (0 << 12)
|
||||
#define G_TF_BILERP (2 << 12)
|
||||
#define G_TF_AVERAGE (3 << 12)
|
||||
|
||||
#define G_TT_NONE (0 << 14)
|
||||
#define G_TT_RGBA16 (2 << 14)
|
||||
#define G_TT_IA16 (3 << 14)
|
||||
|
||||
#define G_TL_TILE (0 << 16)
|
||||
#define G_TL_LOD (1 << 16)
|
||||
|
||||
#define G_TD_CLAMP (0 << 17)
|
||||
#define G_TD_SHARPEN (1 << 17)
|
||||
#define G_TD_DETAIL (2 << 17)
|
||||
|
||||
#define G_TP_NONE (0 << 19)
|
||||
#define G_TP_PERSP (1 << 19)
|
||||
|
||||
#define G_CYC_1CYCLE (0 << 20)
|
||||
#define G_CYC_2CYCLE (1 << 20)
|
||||
#define G_CYC_COPY (2 << 20)
|
||||
#define G_CYC_FILL (3 << 20)
|
||||
|
||||
#define G_PM_NPRIMITIVE (0 << 23)
|
||||
#define G_PM_1PRIMITIVE (1 << 23)
|
||||
|
||||
#define G_SC_NON_INTERLACE 0
|
||||
#define G_SC_ODD_INTERLACE 3
|
||||
#define G_SC_EVEN_INTERLACE 2
|
||||
|
||||
#define G_TX_LOADTILE 7
|
||||
#define G_TX_RENDERTILE 0
|
||||
|
||||
#define G_TX_NOMIRROR 0
|
||||
#define G_TX_WRAP 0
|
||||
#define G_TX_MIRROR 1
|
||||
#define G_TX_CLAMP 2
|
||||
#define G_TX_NOMASK 0
|
||||
#define G_TX_NOLOD 0
|
||||
|
||||
#define G_TX_LDBLK_MAX_TXL 2047
|
||||
|
||||
#define G_MV_VIEWPORT 0x80
|
||||
#define G_MV_LOOKATY 0x82
|
||||
#define G_MV_LOOKATX 0x84
|
||||
#define G_MV_L0 0x86
|
||||
#define G_MV_L1 0x88
|
||||
#define G_MV_L2 0x8A
|
||||
#define G_MV_L3 0x8C
|
||||
#define G_MV_L4 0x8E
|
||||
#define G_MV_L5 0x90
|
||||
#define G_MV_L6 0x92
|
||||
#define G_MV_L7 0x94
|
||||
#define G_MV_TXTATT 0x96
|
||||
#define G_MV_MATRIX_1 0x9E
|
||||
#define G_MV_MATRIX_2 0x98
|
||||
#define G_MV_MATRIX_3 0x9A
|
||||
#define G_MV_MATRIX_4 0x9C
|
||||
|
||||
#define G_SETOTHERMODE_L 0xB9
|
||||
#define G_SETOTHERMODE_H 0xBA
|
||||
|
||||
#ifndef MAX
|
||||
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
#ifndef MIN
|
||||
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
#define gSPMatrix(pkt, m, p) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0x01, 24, 8) \
|
||||
| _SHIFTL((p), 16, 8) \
|
||||
| _SHIFTL(sizeof(Mtx), 0, 16); \
|
||||
_g->words.w1 = (u32)(m); \
|
||||
}
|
||||
|
||||
#define gSPVertex(pkt, v, n, v0) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0x04, 24, 8) \
|
||||
| _SHIFTL(((n)-1) << 4 | (v0), 16, 8) \
|
||||
| _SHIFTL(sizeof(Vtx)*(n), 0, 16); \
|
||||
_g->words.w1 = (u32)(v); \
|
||||
}
|
||||
|
||||
#define gDPLoadSync(pkt) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xE6000000; \
|
||||
_g->words.w1 = 0x00000000; \
|
||||
}
|
||||
|
||||
#define gDPPipeSync(pkt) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xE7000000; \
|
||||
_g->words.w1 = 0x00000000; \
|
||||
}
|
||||
|
||||
#define gDPTileSync(pkt) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xE8000000; \
|
||||
_g->words.w1 = 0x00000000; \
|
||||
}
|
||||
|
||||
#define gDPFullSync(pkt) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xE9000000; \
|
||||
_g->words.w1 = 0x00000000; \
|
||||
}
|
||||
|
||||
#define gSPDisplayList(pkt, dl) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0x06000000; \
|
||||
_g->words.w1 = (u32)(dl); \
|
||||
}
|
||||
|
||||
#define gSPBranchList(pkt, dl) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = 0x06010000; \
|
||||
_g->words.w1 = (u32)(dl); \
|
||||
}
|
||||
|
||||
#define gSPEndDisplayList(pkt) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xB8000000; \
|
||||
_g->words.w1 = 0x00000000; \
|
||||
}
|
||||
|
||||
#define gDPSetCycleType(pkt, type) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xBA001402; \
|
||||
_g->words.w1 = type; \
|
||||
}
|
||||
|
||||
#define gDPPipelineMode(pkt, mode) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xBA001701; \
|
||||
_g->words.w1 = mode; \
|
||||
}
|
||||
|
||||
#define gDPSetScissor(pkt, mode, ulx, uly, lrx, lry) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xED, 24, 8) \
|
||||
| _SHIFTL((int)((float)(ulx)*4.0f), 12, 12) \
|
||||
| _SHIFTL((int)((float)(uly)*4.0f), 0, 12); \
|
||||
_g->words.w1 = _SHIFTL((mode), 24, 8) \
|
||||
| _SHIFTL((int)((float)(lrx)*4.0f), 12, 12) \
|
||||
| _SHIFTL((int)((float)(lry)*4.0f), 0, 12); \
|
||||
}
|
||||
|
||||
#define gDPSetCombine(pkt, muxs0, muxs1) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xFC, 24, 8) \
|
||||
| _SHIFTL((muxs0), 0, 24); \
|
||||
_g->words.w1 = (muxs1); \
|
||||
}
|
||||
|
||||
#define gDPSetTextureLOD(pkt, type) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xBA001001; \
|
||||
_g->words.w1 = type; \
|
||||
}
|
||||
|
||||
#define gDPSetTextureLUT(pkt, type) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xBA000E02; \
|
||||
_g->words.w1 = type; \
|
||||
}
|
||||
|
||||
#define gDPSetTextureDetail(pkt, type) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xBA001102; \
|
||||
_g->words.w1 = type; \
|
||||
}
|
||||
|
||||
#define gDPSetTexturePersp(pkt, type) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xBA001301; \
|
||||
_g->words.w1 = type; \
|
||||
}
|
||||
|
||||
#define gDPSetTextureFilter(pkt, type) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xBA000C02; \
|
||||
_g->words.w1 = type; \
|
||||
}
|
||||
|
||||
#define gDPSetTextureConvert(pkt, type) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xBA000903; \
|
||||
_g->words.w1 = type; \
|
||||
}
|
||||
|
||||
#define gDPSetCombineKey(pkt, type) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xBA000801; \
|
||||
_g->words.w1 = type; \
|
||||
}
|
||||
|
||||
#define gDPSetColorDither(pkt, type) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xBA000602; \
|
||||
_g->words.w1 = type; \
|
||||
}
|
||||
|
||||
#define gDPSetFillColor(pkt, color) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xF7000000; \
|
||||
_g->words.w1 = color; \
|
||||
}
|
||||
|
||||
#define gDPFillRectangle(pkt, ulx, uly, lrx, lry) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xF6, 24, 8) \
|
||||
| _SHIFTL((lrx), 14, 10) \
|
||||
| _SHIFTL((lry), 2, 10); \
|
||||
_g->words.w1 = _SHIFTL(0, 24, 8) \
|
||||
| _SHIFTL((ulx), 14, 10) \
|
||||
| _SHIFTL((uly), 2, 10); \
|
||||
}
|
||||
|
||||
#define gDPSetAlphaCompare(pkt, type) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xB9000002; \
|
||||
_g->words.w1 = type; \
|
||||
}
|
||||
|
||||
#define gDPSetDepthSource(pkt, type) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xB9000201; \
|
||||
_g->words.w1 = type; \
|
||||
}
|
||||
|
||||
#define gSPSetOtherMode(pkt, cmd, shift, length, data) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = _SHIFTL((cmd), 24, 8) \
|
||||
| _SHIFTL((shift), 8, 8) \
|
||||
| _SHIFTL(((length)-1), 0, 8); \
|
||||
_g->words.w1 = (data); \
|
||||
}
|
||||
|
||||
#define gDPSetRenderMode(pkt, mode1, mode2) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xB900031D; \
|
||||
_g->words.w1 = (mode1) | (mode2); \
|
||||
}
|
||||
|
||||
#define gSPClearGeometryMode(pkt, mode) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xB6000000; \
|
||||
_g->words.w1 = mode; \
|
||||
}
|
||||
|
||||
#define gSPSetGeometryMode(pkt, word) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xB7000000; \
|
||||
_g->words.w1 = word; \
|
||||
}
|
||||
|
||||
#define gSPNumLights(pkt, n) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xBC000002; \
|
||||
_g->words.w1 = (0x80000000 + ((n) + 1) * 0x20); \
|
||||
}
|
||||
|
||||
#define gSPTexture(pkt, sc, tc, level, tile, on) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xBB, 24, 8) \
|
||||
| _SHIFTL(0, 16, 8) \
|
||||
| _SHIFTL((level), 11, 3) \
|
||||
| _SHIFTL((tile), 8, 3) \
|
||||
| _SHIFTL((on), 0, 8); \
|
||||
_g->words.w1 = _SHIFTL((sc), 16, 16) \
|
||||
| _SHIFTL((tc), 0, 16); \
|
||||
}
|
||||
|
||||
#define gDPSetColorImage(pkt, fmt, size, width, image) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xFF, 24, 8) \
|
||||
| _SHIFTL((fmt), 21, 3) \
|
||||
| _SHIFTL((size), 19, 2) \
|
||||
| _SHIFTL((width)-1, 0, 12); \
|
||||
_g->words.w1 = (image); \
|
||||
}
|
||||
|
||||
#define gDPSetTileSize(pkt, tile, uls, ult, lrs, lrt) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xF2, 24, 8) \
|
||||
| _SHIFTL(uls, 12, 12) \
|
||||
| _SHIFTL(ult, 0, 12); \
|
||||
_g->words.w1 = _SHIFTL(tile, 24, 3) \
|
||||
| _SHIFTL(lrs, 12, 12) \
|
||||
| _SHIFTL(lrt, 0, 12); \
|
||||
}
|
||||
|
||||
#define gDPLoadBlock(pkt, tile, uls, ult, lrs, dxt) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xF3, 24, 8) \
|
||||
| _SHIFTL((uls), 12, 12) \
|
||||
| _SHIFTL((ult), 0, 12); \
|
||||
_g->words.w1 = _SHIFTL((tile), 24, 3) \
|
||||
| _SHIFTL((MIN((lrs),G_TX_LDBLK_MAX_TXL)), 12, 12) \
|
||||
| _SHIFTL((dxt), 0, 12); \
|
||||
}
|
||||
|
||||
#define gDPSetTile(pkt, fmt, siz, line, tmem, tile, \
|
||||
palette, cmt, maskt, shiftt, cms, masks, shifts) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xF5, 24, 8) \
|
||||
| _SHIFTL((fmt), 21, 3) \
|
||||
| _SHIFTL((siz), 19, 2) \
|
||||
| _SHIFTL((line), 9, 9) \
|
||||
| _SHIFTL((tmem), 0, 9); \
|
||||
_g->words.w1 = _SHIFTL((tile), 24, 3) \
|
||||
| _SHIFTL((palette), 20, 4) \
|
||||
| _SHIFTL((cmt), 18, 2) \
|
||||
| _SHIFTL((maskt), 14, 4) \
|
||||
| _SHIFTL((shiftt), 10, 4) \
|
||||
| _SHIFTL((cms), 8, 2) \
|
||||
| _SHIFTL((masks), 4, 4) \
|
||||
| _SHIFTL((shifts), 0, 4); \
|
||||
}
|
||||
|
||||
#define gDPSetDepthImage(pkt, image) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xFE, 24, 8); \
|
||||
_g->words.w1 = (image); \
|
||||
}
|
||||
|
||||
#define G_SETPRIMCOLOR 0xFA
|
||||
|
||||
#define gDPSetPrimColor(pkt, m, l, r, g, b, a) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(G_SETPRIMCOLOR, 24, 8) \
|
||||
| _SHIFTL(m, 8, 8) \
|
||||
| _SHIFTL(l, 0, 8); \
|
||||
_g->words.w1 = _SHIFTL(r, 24, 8) \
|
||||
| _SHIFTL(g, 16, 8) \
|
||||
| _SHIFTL(b, 8, 8) \
|
||||
| _SHIFTL(a, 0, 8); \
|
||||
}
|
||||
|
||||
#define gDPSetEnvColor(pkt, r, g, b, a) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xFB, 24, 8); \
|
||||
_g->words.w1 = _SHIFTL((r), 24, 8) \
|
||||
| _SHIFTL((g), 16, 8) \
|
||||
| _SHIFTL((b), 8, 8) \
|
||||
| _SHIFTL((a), 0, 8); \
|
||||
}
|
||||
|
||||
#define gDPSetTextureImage(pkt, fmt, size, width, img) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xFD, 24, 8) \
|
||||
| _SHIFTL((fmt), 21, 3) \
|
||||
| _SHIFTL((size), 19, 2) \
|
||||
| _SHIFTL((width)-1, 0, 12); \
|
||||
_g->words.w1 = (u32)(img); \
|
||||
}
|
||||
|
||||
#define gMoveWd(pkt, index, offset, data) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xBC, 24, 8) \
|
||||
| _SHIFTL((offset), 8, 16) \
|
||||
| _SHIFTL((index), 0, 8); \
|
||||
_g->words.w1 = (u32)(data); \
|
||||
}
|
||||
|
||||
/* Matrix Operations */
|
||||
|
||||
#define G_MTX_MODELVIEW 0x00
|
||||
#define G_MTX_PROJECTION 0x01
|
||||
#define G_MTX_MUL 0x00
|
||||
#define G_MTX_LOAD 0x02
|
||||
#define G_MTX_NOPUSH 0x00
|
||||
#define G_MTX_PUSH 0x04
|
||||
|
||||
#define gSPPopMatrix(pkt, n) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = 0xBD000000; \
|
||||
_g->words.w1 = (n); \
|
||||
}
|
||||
|
||||
#define gSPViewport(pkt, v) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0x03, 24, 8) \
|
||||
| _SHIFTL(G_MV_VIEWPORT, 16, 8) \
|
||||
| _SHIFTL(sizeof(Vp), 0, 16); \
|
||||
_g->words.w1 = (u32)(v); \
|
||||
}
|
||||
|
||||
#define gSP1Triangle(pkt, v0, v1, v2, flag) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xBF, 24, 8); \
|
||||
_g->words.w1 = _SHIFTL((flag), 24, 8) \
|
||||
| _SHIFTL((v0)*10, 16, 8) \
|
||||
| _SHIFTL((v1)*10, 8, 8) \
|
||||
| _SHIFTL((v2)*10, 0, 8); \
|
||||
}
|
||||
|
||||
#define gSPTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xE4, 24, 8) \
|
||||
| _SHIFTL((xh), 12, 12) \
|
||||
| _SHIFTL((yh), 0, 12); \
|
||||
_g->words.w1 = _SHIFTL((tile), 24, 3) \
|
||||
| _SHIFTL((xl), 12, 12) \
|
||||
| _SHIFTL((yl), 0, 12); \
|
||||
} \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xB3, 24, 8); \
|
||||
_g->words.w1 = _SHIFTL((s), 16, 16) \
|
||||
| _SHIFTL((t), 0, 16); \
|
||||
} \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(0xB2, 24, 8); \
|
||||
_g->words.w1 = _SHIFTL((dsdx), 16, 16) \
|
||||
| _SHIFTL((dtdy), 0, 16); \
|
||||
}
|
||||
|
||||
/* Lights and Light Operations */
|
||||
|
||||
typedef struct {
|
||||
unsigned char col[3];
|
||||
char pad1;
|
||||
unsigned char colc[3];
|
||||
char pad2;
|
||||
signed char dir[3];
|
||||
char pad3;
|
||||
} Light_t;
|
||||
|
||||
typedef struct {
|
||||
unsigned char col[3];
|
||||
char pad1;
|
||||
unsigned char colc[3];
|
||||
char pad2;
|
||||
} Ambient_t;
|
||||
|
||||
typedef union {
|
||||
Ambient_t l;
|
||||
long long int force_structure_alignment[1];
|
||||
} Ambient;
|
||||
|
||||
typedef union {
|
||||
Light_t l;
|
||||
long long int force_structure_alignment[2];
|
||||
} Light;
|
||||
|
||||
typedef struct {
|
||||
Ambient a;
|
||||
Light l[4];
|
||||
} Lights4;
|
||||
|
||||
typedef struct {
|
||||
Light l[2];
|
||||
} LookAt;
|
||||
|
||||
typedef struct {
|
||||
int x1, y1, x2, y2;
|
||||
} Hilite_t;
|
||||
|
||||
typedef union {
|
||||
Hilite_t h;
|
||||
long int force_alignmnet[4];
|
||||
} Hilite;
|
||||
|
||||
#define G_MOVEMEM 0x03
|
||||
/* for gSPNumLights */
|
||||
// is NUMLIGHTS_0 accurate?
|
||||
#define NUMLIGHTS_0 1
|
||||
#define NUMLIGHTS_1 1
|
||||
#define NUMLIGHTS_2 2
|
||||
#define NUMLIGHTS_3 3
|
||||
#define NUMLIGHTS_4 4
|
||||
#define NUMLIGHTS_5 5
|
||||
#define NUMLIGHTS_6 6
|
||||
#define NUMLIGHTS_7 7
|
||||
|
||||
/* for gSPLight */
|
||||
#define LIGHT_1 1
|
||||
#define LIGHT_2 2
|
||||
#define LIGHT_3 3
|
||||
#define LIGHT_4 4
|
||||
#define LIGHT_5 5
|
||||
#define LIGHT_6 6
|
||||
#define LIGHT_7 7
|
||||
#define LIGHT_8 8
|
||||
|
||||
#define gSPLight(pkt, l, n) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(G_MOVEMEM, 24, 8) \
|
||||
| _SHIFTL(((n)-1)*2+G_MV_L0, 16, 8) \
|
||||
| _SHIFTL(sizeof(Light), 0, 16); \
|
||||
_g->words.w1 = (u32)(l); \
|
||||
}
|
||||
|
||||
#define gSPLookAtX(pkt, la) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(G_MOVEMEM, 24, 8) \
|
||||
| _SHIFTL(G_MV_LOOKATX, 16, 8) \
|
||||
| _SHIFTL(sizeof(Light), 0, 16); \
|
||||
_g->words.w1 = (u32)(la); \
|
||||
}
|
||||
|
||||
#define gSPLookAtY(pkt, la) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(G_MOVEMEM, 24, 8) \
|
||||
| _SHIFTL(G_MV_LOOKATY, 16, 8) \
|
||||
| _SHIFTL(sizeof(Light), 0, 16); \
|
||||
_g->words.w1 = (u32)(la); \
|
||||
}
|
||||
|
||||
#define gSPLookAt(pkt, la) \
|
||||
{ \
|
||||
gSPLookAtX((pkt), (la)) \
|
||||
gSPLookAtY((pkt), (char *)(la)+16) \
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,332 +0,0 @@
|
|||
/* GNU as assembler macros for F3D GBI */
|
||||
|
||||
/* commands with no parameters */
|
||||
.macro f3d_noparam cmd
|
||||
.word (\cmd << 24), 0x00000000
|
||||
.endm
|
||||
|
||||
.macro gsImmp1 cmd, param
|
||||
.word (\cmd << 24), \param
|
||||
.endm
|
||||
|
||||
/* DMA helper */
|
||||
.macro gsDma1p cmd, segAddr, length, params
|
||||
.byte \cmd, \params
|
||||
.hword \length
|
||||
.word \segAddr
|
||||
.endm
|
||||
|
||||
/* 01: G_MTX */
|
||||
/* params */
|
||||
.set G_MTX_MODELVIEW, 0x00
|
||||
.set G_MTX_PROJECTION, 0x01
|
||||
.set G_MTX_MUL, 0x00
|
||||
.set G_MTX_LOAD, 0x02
|
||||
.set G_MTX_NOPUSH, 0x00
|
||||
.set G_MTX_PUSH, 0x04
|
||||
|
||||
.set G_MTX, 0x01
|
||||
.macro gsSPMatrix matrix, params
|
||||
gsDma1p G_MTX, \matrix, 64, \params
|
||||
.endm
|
||||
|
||||
/* 02: reserved */
|
||||
|
||||
/* 03: G_MOVEMEM */
|
||||
.set G_MOVEMEM, 0x03
|
||||
.set G_MV_L0, 0x86
|
||||
.macro gsSPLight light, num
|
||||
gsDma1p G_MOVEMEM, \light, 16, ((\num)-1)*2+G_MV_L0
|
||||
.endm
|
||||
|
||||
/* 04: G_VTX */
|
||||
.set G_VTX, 0x04
|
||||
.macro gsSPVertex verts, num, index
|
||||
gsDma1p G_VTX, \verts, 16*\num, ((\num)-1)<<4|(\index)
|
||||
.endm
|
||||
|
||||
/* 05: reserved */
|
||||
|
||||
/* 06: G_DL */
|
||||
.set G_DL, 0x06
|
||||
.set G_DL_PUSH, 0x00
|
||||
.set G_DL_NOPUSH, 0x01
|
||||
.macro gsSPDisplayList dl
|
||||
gsDma1p G_DL, \dl, 0, G_DL_PUSH
|
||||
.endm
|
||||
.macro gsSPBranchList dl
|
||||
gsDma1p G_DL, \dl, 0, G_DL_NOPUSH
|
||||
.endm
|
||||
|
||||
/* geometry mode flags */
|
||||
.set G_ZBUFFER, 0x00000001
|
||||
.set G_SHADE, 0x00000004
|
||||
.set G_SHADING_SMOOTH, 0x00000200
|
||||
.set G_CULL_FRONT, 0x00001000
|
||||
.set G_CULL_BACK, 0x00002000
|
||||
.set G_FOG, 0x00010000
|
||||
.set G_LIGHTING, 0x00020000
|
||||
.set G_TEXTURE_GEN, 0x00040000
|
||||
.set G_TEXTURE_GEN_LINEAR, 0x00080000
|
||||
|
||||
/* B3: G_RDPHALF_2 */
|
||||
.set G_RDPHALF_2, 0xB3
|
||||
|
||||
/* B4: G_RDPHALF_1 */
|
||||
.set G_RDPHALF_1, 0xB4
|
||||
|
||||
/* B6: G_CLEARGEOMETRYMODE */
|
||||
.set G_CLEARGEOMETRYMODE, 0xB6
|
||||
.macro gsSPClearGeometryMode flags
|
||||
.word G_CLEARGEOMETRYMODE << 24
|
||||
.word \flags
|
||||
.endm
|
||||
|
||||
/* B7: G_SETGEOMETRYMODE */
|
||||
.set G_SETGEOMETRYMODE, 0xB7
|
||||
.macro gsSPSetGeometryMode flags
|
||||
.word G_SETGEOMETRYMODE << 24
|
||||
.word \flags
|
||||
.endm
|
||||
|
||||
/* B8: G_ENDDL */
|
||||
.set G_ENDDL, 0xB8
|
||||
.macro gsSPEndDisplayList
|
||||
f3d_noparam G_ENDDL
|
||||
.endm
|
||||
|
||||
/* B9: G_SETOTHERMODE_L */
|
||||
.set G_SETOTHERMODE_L, 0xB9
|
||||
/* G_SETOTHERMODE_L sft: shift count */
|
||||
.set G_MDSFT_ALPHACOMPARE, 0
|
||||
.set G_MDSFT_ZSRCSEL, 2
|
||||
.set G_MDSFT_RENDERMODE, 3
|
||||
.set G_MDSFT_BLENDER, 16
|
||||
|
||||
/* BA: G_SETOTHERMODE_H */
|
||||
.set G_SETOTHERMODE_H, 0xBA
|
||||
/* G_SETOTHERMODE_H sft: shift count */
|
||||
.set G_MDSFT_ALPHADITHER, 4
|
||||
.set G_MDSFT_RGBDITHER, 6
|
||||
.set G_MDSFT_COMBKEY, 8
|
||||
.set G_MDSFT_TEXTCONV, 9
|
||||
.set G_MDSFT_TEXTFILT, 12
|
||||
.set G_MDSFT_TEXTLUT, 14
|
||||
.set G_MDSFT_TEXTLOD, 16
|
||||
.set G_MDSFT_TEXTDETAIL, 17
|
||||
.set G_MDSFT_TEXTPERSP, 19
|
||||
.set G_MDSFT_CYCLETYPE, 20
|
||||
.set G_MDSFT_PIPELINE, 23
|
||||
|
||||
.macro gsSPSetOtherMode cmd, sft, len, data
|
||||
.word ((\cmd & 0xFF) << 24) | ((\sft & 0xFF) << 8) | (\len & 0xFF)
|
||||
.word \data
|
||||
.endm
|
||||
|
||||
/* BB: G_TEXTURE */
|
||||
.set G_TEXTURE, 0xBB
|
||||
.macro gsSPTexture scaleS, scaleT, level, tile, enable
|
||||
.word (G_TEXTURE << 24) | ((\level & 0x7) << 11) | ((\tile & 0x7) << 8) | \enable
|
||||
.word ((\scaleS & 0xFFFF) << 16) | (\scaleT & 0xFFFF)
|
||||
.endm
|
||||
|
||||
/* BC: G_MOVEWORD */
|
||||
.set G_MOVEWORD, 0xBC
|
||||
.macro gsMoveWd index, offset, data
|
||||
.word G_MOVEWORD << 24 | ((\index & 0xFFFF) << 8) | (\offset & 0xFF)
|
||||
.word \data
|
||||
.endm
|
||||
|
||||
/* BF: G_TRI1 */
|
||||
.set G_TRI1, 0xBF
|
||||
.macro gsSP1Triangle v0, v1, v2, flag
|
||||
.word G_TRI1 << 24
|
||||
.byte \flag, \v0*10, \v1*10, \v2*10
|
||||
.endm
|
||||
|
||||
/* C0: G_NOOP */
|
||||
.set G_NOOP, 0xC0
|
||||
.macro gsDPNoOp
|
||||
f3d_noparam G_NOOP
|
||||
.endm
|
||||
|
||||
/* E6: G_RDPLOADSYNC */
|
||||
.set G_RDPLOADSYNC, 0xE6
|
||||
.macro gsDPLoadSync
|
||||
f3d_noparam G_RDPLOADSYNC
|
||||
.endm
|
||||
|
||||
/* E7: G_RDPPIPESYNC */
|
||||
.set G_RDPPIPESYNC, 0xE7
|
||||
.macro gsDPPipeSync
|
||||
f3d_noparam G_RDPPIPESYNC
|
||||
.endm
|
||||
|
||||
/* E8: G_RDPTILESYNC */
|
||||
.set G_RDPTILESYNC, 0xE8
|
||||
.macro gsDPTileSync
|
||||
f3d_noparam G_RDPTILESYNC
|
||||
.endm
|
||||
|
||||
/* E9: G_RDPFULLSYNC */
|
||||
.set G_RDPFULLSYNC, 0xE9
|
||||
.macro gsDPFullSync
|
||||
f3d_noparam G_RDPFULLSYNC
|
||||
.endm
|
||||
|
||||
/* F0: G_LOADTLUT */
|
||||
.set G_LOADTLUT, 0xF0
|
||||
.macro gsDPLoadTLUTCmd tile, count
|
||||
.word G_LOADTLUT << 24
|
||||
.word ((\tile & 0x7) << 24) | (\count & 0x3FFF) << 10
|
||||
.endm
|
||||
|
||||
/* F1: unused */
|
||||
|
||||
/* F2: G_SETTILESIZE */
|
||||
.set G_SETTILESIZE, 0xF2
|
||||
.macro gsDPSetTileSize tile, uls, ult, lrs, lrt
|
||||
.word (G_SETTILESIZE << 24) | ((\uls & 0x0FFF) << 12) | (\ult & 0x0FFF)
|
||||
.word ((\tile & 0x7) << 24) | ((\lrs & 0x0FFF) << 12) | (\lrt & 0x0FFF)
|
||||
.endm
|
||||
|
||||
/* F3: G_LOADBLOCK */
|
||||
.set G_LOADBLOCK, 0xF3
|
||||
.macro gsDPLoadBlock tile, uls, ult, lrs, dxt
|
||||
.word (G_LOADBLOCK << 24) | ((\uls & 0x0FFF) << 12) | (\ult & 0x0FFF)
|
||||
.word ((\tile & 0x7) << 24) | ((\lrs & 0x0FFF) << 12) | (\dxt & 0x0FFF)
|
||||
.endm
|
||||
|
||||
/* F5: G_SETTILE */
|
||||
.set G_TX_LOADTILE, 0x7
|
||||
.set G_TX_RENDERTILE, 0x0
|
||||
|
||||
/* axis clamp and mirror flags */
|
||||
.set G_TX_NOMIRROR, 0x0
|
||||
.set G_TX_WRAP, 0x0
|
||||
.set G_TX_MIRROR, 0x1
|
||||
.set G_TX_CLAMP, 0x2
|
||||
|
||||
/* mask flags */
|
||||
.set G_TX_NOMASK, 0x0
|
||||
|
||||
/* shift flags */
|
||||
.set G_TX_NOLOD, 0x0
|
||||
|
||||
.set G_SETTILE, 0xF5
|
||||
.macro gsDPSetTile fmt, siz, line, tmem, tile, palette, cmt, maskt, shiftt, cms, masks, shifts
|
||||
.word (G_SETTILE << 24) | ((\fmt & 0x7) << 21) | ((\siz & 0x3) << 19) | ((\line & 0x1FF) << 9) | (\tmem & 0x1FF)
|
||||
.word ((\tile & 0x7) << 24) | ((\palette & 0xF) << 20) | ((\cmt & 0x3) << 18) | ((\maskt & 0xF) << 14) | ((\shiftt & 0xF) << 10) | ((\cms & 0x3) << 8) | ((\masks & 0xF) << 4) | (\shifts & 0xF)
|
||||
.endm
|
||||
|
||||
/* F6: G_FILLRECT */
|
||||
.set G_FILLRECT, 0xF6
|
||||
.macro gsDPFillRectangle ulx, uly, lrx, lry
|
||||
.word (G_FILLRECT << 24) | ((\lrx & 0x3FF) << 14) | ((\lry & 0x3FF) << 2)
|
||||
.word ((\ulx & 0x3FF) << 14) | ((\uly & 0x3FF) << 2)
|
||||
.endm
|
||||
|
||||
/* F7: G_SETFILLCOLOR */
|
||||
.set G_SETFILLCOLOR, 0xF7
|
||||
.macro gsDPSetFillColor fillValue
|
||||
.word G_SETFILLCOLOR << 24
|
||||
.word \fillValue
|
||||
.endm
|
||||
|
||||
/* helper for RGBA colors */
|
||||
.macro sDPRGBColor cmd r, g, b, a
|
||||
.word \cmd << 24
|
||||
.byte \r, \g, \b, \a
|
||||
.endm
|
||||
|
||||
/* F8: G_SETFOGCOLOR */
|
||||
.set G_SETFOGCOLOR, 0xF8
|
||||
.macro gsDPSetFogColor r, g, b, a
|
||||
sDPRGBColor G_SETFOGCOLOR, \r, \g, \b, \a
|
||||
.endm
|
||||
|
||||
/* F9: G_SETBLENDCOLOR */
|
||||
.set G_SETBLENDCOLOR, 0xF9
|
||||
.macro gsDPSetBlendColor r, g, b, a
|
||||
sDPRGBColor G_SETBLENDCOLOR, \r, \g, \b, \a
|
||||
.endm
|
||||
|
||||
/* FA: G_SETPRIMCOLOR */
|
||||
.set G_SETPRIMCOLOR, 0xFA
|
||||
.macro gsDPSetPrimColor m, l, r, g, b, a
|
||||
.word (G_SETPRIMCOLOR << 24) | ((\m & 0xFF) << 8) | (\l & 0xFF)
|
||||
.byte \r, \g, \b, \a
|
||||
.endm
|
||||
|
||||
/* FB: G_SETENVCOLOR */
|
||||
.set G_SETENVCOLOR, 0xFB
|
||||
.macro gsDPSetEnvColor r, g, b, a
|
||||
sDPRGBColor G_SETENVCOLOR, \r, \g, \b, \a
|
||||
.endm
|
||||
|
||||
/* FC: G_SETCOMBINE */
|
||||
/* color combiner */
|
||||
.set G_CCMUX_COMBINED, 0
|
||||
.set G_CCMUX_TEXEL0, 1
|
||||
.set G_CCMUX_TEXEL1, 2
|
||||
.set G_CCMUX_PRIMITIVE, 3
|
||||
.set G_CCMUX_SHADE, 4
|
||||
.set G_CCMUX_ENVIRONMENT, 5
|
||||
.set G_CCMUX_CENTER, 6
|
||||
.set G_CCMUX_SCALE, 6
|
||||
.set G_CCMUX_COMBINED_ALPHA, 7
|
||||
.set G_CCMUX_TEXEL0_ALPHA, 8
|
||||
.set G_CCMUX_TEXEL1_ALPHA, 9
|
||||
.set G_CCMUX_PRIMITIVE_ALPHA, 10
|
||||
.set G_CCMUX_SHADE_ALPHA, 11
|
||||
.set G_CCMUX_ENV_ALPHA, 12
|
||||
.set G_CCMUX_LOD_FRACTION, 13
|
||||
.set G_CCMUX_PRIM_LOD_FRAC, 14
|
||||
.set G_CCMUX_NOISE, 7
|
||||
.set G_CCMUX_K4, 7
|
||||
.set G_CCMUX_K5, 15
|
||||
.set G_CCMUX_1, 6
|
||||
.set G_CCMUX_0, 31
|
||||
|
||||
/* alpha combiner */
|
||||
.set G_ACMUX_COMBINED, 0
|
||||
.set G_ACMUX_TEXEL0, 1
|
||||
.set G_ACMUX_TEXEL1, 2
|
||||
.set G_ACMUX_PRIMITIVE, 3
|
||||
.set G_ACMUX_SHADE, 4
|
||||
.set G_ACMUX_ENVIRONMENT, 5
|
||||
.set G_ACMUX_LOD_FRACTION, 0
|
||||
.set G_ACMUX_PRIM_LOD_FRAC, 6
|
||||
.set G_ACMUX_1, 6
|
||||
.set G_ACMUX_0, 7
|
||||
|
||||
.set G_SETCOMBINE, 0xFC
|
||||
.macro gsDPSetCombine muxs0, muxs1
|
||||
.word (G_SETCOMBINE << 24) | (\muxs0 & 0x00FFFFFF)
|
||||
.word \muxs1
|
||||
.endm
|
||||
.macro gsDPSetCombineMode a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0, a1, b1, c1, d1, Aa1, Ab1, Ac1, Ad1
|
||||
.word (G_SETCOMBINE << 24) | ((\a0 & 0xF) << 20) | ((\c0 & 0x1F) << 15) | ((\Aa0 & 0x7) << 12) | ((\Ac0 & 0x7) << 9) | ((\a1 & 0xF) << 5) | (\c1 & 0x1F)
|
||||
.word ((\b0 & 0xF) << 28) | ((\b1 & 0xF) << 24) | ((\Aa1 & 0x7) << 21) | ((\Ac1 & 0x7) << 18) | ((\d0 & 0x7) << 15) | ((\Ab0 & 0x7) << 12) | ((\Ad0 & 0x7) << 9) | ((\d1 & 0x7) << 6) | ((\Ab1 & 0x7) << 3) | (\Ad1 & 0x7)
|
||||
.endm
|
||||
|
||||
/* FD: G_SETTIMG */
|
||||
/* fmt */
|
||||
.set G_IM_FMT_RGBA, 0x00
|
||||
.set G_IM_FMT_YUV, 0x01
|
||||
.set G_IM_FMT_CI, 0x02
|
||||
.set G_IM_FMT_IA, 0x03
|
||||
.set G_IM_FMT_I, 0x04
|
||||
|
||||
/* size */
|
||||
.set G_IM_SIZ_4b, 0x00
|
||||
.set G_IM_SIZ_8b, 0x01
|
||||
.set G_IM_SIZ_16b, 0x02
|
||||
.set G_IM_SIZ_32b, 0x03
|
||||
|
||||
.set G_SETTIMG, 0xFD
|
||||
.macro gsDPSetTextureImage fmt, size, width, segAddr
|
||||
.word (G_SETTIMG << 24) | ((\fmt & 0x7) << 21) | ((\size & 0x3) << 19) | ((\width-1) & 0x0FFF)
|
||||
.word \segAddr
|
||||
.endm
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
#ifndef _ULTRA64_GU_H_
|
||||
#define _ULTRA64_GU_H_
|
||||
|
||||
#define GU_PI 3.1415926
|
||||
/* Functions */
|
||||
|
||||
void guPerspectiveF(float mf[4][4], u16 *perspNorm, float fovy, float aspect,
|
||||
float near, float far, float scale);
|
||||
void guPerspective(Mtx *m, u16 *perspNorm, float fovy, float aspect, float near,
|
||||
float far, float scale);
|
||||
void guOrtho(Mtx *m, float left, float right, float bottom, float top,
|
||||
float near, float far, float scale);
|
||||
void guTranslate(Mtx *m, float x, float y, float z);
|
||||
void guRotate(Mtx *m, float a, float x, float y, float z);
|
||||
void guScale(Mtx *m, float x, float y, float z);
|
||||
void guMtxF2L(float mf[4][4], Mtx *m);
|
||||
void guMtxIdent(Mtx *m);
|
||||
void guMtxIdentF(float mf[4][4]);
|
||||
void guMtxL2F(float mf[4][4], Mtx *m);
|
||||
void guNormalize(float *, float *, float *);
|
||||
#endif
|
|
@ -1,14 +0,0 @@
|
|||
#ifndef _ULTRA64_INTERRUPT_H_
|
||||
#define _ULTRA64_INTERRUPT_H_
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef u32 OSIntMask;
|
||||
|
||||
|
||||
/* Functions */
|
||||
|
||||
OSIntMask osGetIntMask(void);
|
||||
OSIntMask osSetIntMask(OSIntMask);
|
||||
|
||||
#endif
|
|
@ -1,20 +0,0 @@
|
|||
#ifndef _ULTRA64_LIBAUDIO_H_
|
||||
#define _ULTRA64_LIBAUDIO_H_
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 *offset;
|
||||
s32 len;
|
||||
} ALSeqData;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
s16 revision;
|
||||
s16 seqCount;
|
||||
ALSeqData seqArray[1];
|
||||
} ALSeqFile;
|
||||
|
||||
void alSeqFileNew(ALSeqFile *f, u8 *base);
|
||||
|
||||
#endif
|
|
@ -1,8 +0,0 @@
|
|||
#ifndef _ULTRA64_LIBC_H_
|
||||
#define _ULTRA64_LIBC_H_
|
||||
|
||||
int sprintf(char *, const char *, ... );
|
||||
void bcopy(const void *src, void *dest, size_t size);
|
||||
void bzero(void *s, size_t size);
|
||||
|
||||
#endif
|
|
@ -1,17 +0,0 @@
|
|||
#ifndef _LIBULTRA_H
|
||||
#define _LIBULTRA_H
|
||||
|
||||
#define TV_TYPE_NTSC 1
|
||||
#define TV_TYPE_PAL 0
|
||||
#define TV_TYPE_MPAL 2
|
||||
|
||||
#define RESET_TYPE_COLD_RESET 0
|
||||
#define RESET_TYPE_NMI 1
|
||||
#define RESET_TYPE_BOOT_DISK 2
|
||||
|
||||
extern u32 osTvType;
|
||||
extern u32 osRomBase;
|
||||
extern u32 osResetType;
|
||||
extern u8 osAppNmiBuffer[64];
|
||||
|
||||
#endif /* _LIBULTRA_H */
|
|
@ -1,50 +0,0 @@
|
|||
#ifndef _ULTRA64_MESSAGE_H_
|
||||
#define _ULTRA64_MESSAGE_H_
|
||||
|
||||
/* Events */
|
||||
#define OS_EVENT_SW1 0
|
||||
#define OS_EVENT_SW2 1
|
||||
#define OS_EVENT_CART 2
|
||||
#define OS_EVENT_COUNTER 3
|
||||
#define OS_EVENT_SP 4
|
||||
#define OS_EVENT_SI 5
|
||||
#define OS_EVENT_AI 6
|
||||
#define OS_EVENT_VI 7
|
||||
#define OS_EVENT_PI 8
|
||||
#define OS_EVENT_DP 9
|
||||
#define OS_EVENT_CPU_BREAK 10
|
||||
#define OS_EVENT_SP_BREAK 11
|
||||
#define OS_EVENT_FAULT 12
|
||||
#define OS_EVENT_THREADSTATUS 13
|
||||
#define OS_EVENT_PRENMI 14
|
||||
|
||||
#define OS_MESG_NOBLOCK 0
|
||||
#define OS_MESG_BLOCK 1
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef u32 OSEvent;
|
||||
|
||||
typedef void *OSMesg;
|
||||
|
||||
typedef struct OSMesgQueue_s
|
||||
{
|
||||
OSThread *mtqueue;
|
||||
OSThread *fullqueue;
|
||||
s32 validCount;
|
||||
s32 first;
|
||||
s32 msgCount;
|
||||
OSMesg *msg;
|
||||
} OSMesgQueue;
|
||||
|
||||
/* Functions */
|
||||
|
||||
void osCreateMesgQueue(OSMesgQueue *mq, OSMesg *msgBuf, s32 count);
|
||||
s32 osSendMesg(OSMesgQueue *mq, OSMesg msg, s32 flag);
|
||||
s32 osJamMesg(OSMesgQueue *mq, OSMesg msg, s32 flag);
|
||||
s32 osRecvMesg(OSMesgQueue *mq, OSMesg *msg, s32 flag);
|
||||
void osSetEventMesg(OSEvent e, OSMesgQueue *mq, OSMesg msg);
|
||||
void osViSetEvent(OSMesgQueue *mq, OSMesg msg, u32 retraceCount);
|
||||
s32 osContStartReadData(OSMesgQueue *mq);
|
||||
|
||||
#endif
|
|
@ -1,8 +0,0 @@
|
|||
#ifndef _ULTRA64_AI_H_
|
||||
#define _ULTRA64_AI_H_
|
||||
|
||||
u32 osAiGetLength(void);
|
||||
s32 osAiSetNextBuffer(void *, u32);
|
||||
s32 osAiSetFrequency(u32);
|
||||
|
||||
#endif
|
|
@ -1,39 +0,0 @@
|
|||
#ifndef _ULTRA64_CONTROLLER_H_
|
||||
#define _ULTRA64_CONTROLLER_H_
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/*0x00*/ u16 type; /* Controller Type */
|
||||
/*0x02*/ u8 status; /* Controller status */
|
||||
/*0x03*/ u8 errno;
|
||||
} OSContStatus;
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ u16 button;
|
||||
/*0x02*/ s8 stick_x; /* -80 <= stick_x <= 80 */
|
||||
/*0x03*/ s8 stick_y; /* -80 <= stick_y <= 80 */
|
||||
/*0x04*/ u8 errno;
|
||||
} OSContPad;
|
||||
|
||||
#define A_BUTTON (1 << 15) // 0x8000
|
||||
#define B_BUTTON (1 << 14) // 0x4000
|
||||
#define Z_TRIG (1 << 13) // 0x2000
|
||||
#define START_BUTTON (1 << 12) // 0x1000
|
||||
#define U_JPAD (1 << 11) // 0x0800
|
||||
#define D_JPAD (1 << 10) // 0x0400
|
||||
#define L_JPAD (1 << 9) // 0x0200
|
||||
#define R_JPAD (1 << 8) // 0x0100
|
||||
#define DUMMY_1 (1 << 7) // 0x0080 (unused)
|
||||
#define DUMMY_2 (1 << 6) // 0x0040 (unused)
|
||||
#define L_TRIG (1 << 5) // 0x0020
|
||||
#define R_TRIG (1 << 4) // 0x0010
|
||||
#define U_CBUTTONS (1 << 3) // 0x0008
|
||||
#define D_CBUTTONS (1 << 2) // 0x0004
|
||||
#define L_CBUTTONS (1 << 1) // 0x0002
|
||||
#define R_CBUTTONS (1 << 0) // 0x0001
|
||||
|
||||
|
||||
s32 osContInit(OSMesgQueue *, u8 *, OSContStatus *);
|
||||
void osContGetReadData(OSContPad *);
|
||||
|
||||
#endif
|
|
@ -1,16 +0,0 @@
|
|||
#ifndef _ULTRA64_OS_INTERNAL_H_
|
||||
#define _ULTRA64_OS_INTERNAL_H_
|
||||
|
||||
/* Internal functions used by the operating system */
|
||||
/* Do not include this header in application code */
|
||||
|
||||
/* Variables */
|
||||
|
||||
//extern u64 osClockRate;
|
||||
|
||||
/* Functions */
|
||||
|
||||
/*u32 __osProbeTLB(void *);
|
||||
u32 __osDisableInt(void);
|
||||
void __osRestoreInt(u32);*/
|
||||
#endif
|
|
@ -1,11 +0,0 @@
|
|||
#ifndef _ULTRA64_OS_MISC_H_
|
||||
#define _ULTRA64_OS_MISC_H_
|
||||
|
||||
/* Miscellaneous OS functions */
|
||||
|
||||
void osInitialize(void);
|
||||
u32 osGetCount(void);
|
||||
|
||||
u32 osVirtualToPhysical(void *);
|
||||
|
||||
#endif
|
|
@ -1,85 +0,0 @@
|
|||
#ifndef _ULTRA64_PI_H_
|
||||
#define _ULTRA64_PI_H_
|
||||
|
||||
/* Ultra64 Parallel Interface */
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 errStatus;
|
||||
void *dramAddr;
|
||||
void *C2Addr;
|
||||
u32 sectorSize;
|
||||
u32 C1ErrNum;
|
||||
u32 C1ErrSector[4];
|
||||
} __OSBlockInfo;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 cmdType;
|
||||
u16 transferMode;
|
||||
u16 blockNum;
|
||||
s32 sectorNum;
|
||||
u32 devAddr;
|
||||
u32 bmCtlShadow;
|
||||
u32 seqCtlShadow;
|
||||
__OSBlockInfo block[2];
|
||||
} __OSTranxInfo;
|
||||
|
||||
typedef struct OSPiHandle_s
|
||||
{
|
||||
struct OSPiHandle_s *next;
|
||||
u8 type;
|
||||
u8 latency;
|
||||
u8 pageSize;
|
||||
u8 relDuration;
|
||||
u8 pulse;
|
||||
u8 domain;
|
||||
u32 baseAddress;
|
||||
u32 speed;
|
||||
__OSTranxInfo transferInfo;
|
||||
} OSPiHandle;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 type;
|
||||
u32 address;
|
||||
} OSPiInfo;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u16 type;
|
||||
u8 pri;
|
||||
u8 status;
|
||||
OSMesgQueue *retQueue;
|
||||
} OSIoMesgHdr;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/*0x00*/ OSIoMesgHdr hdr;
|
||||
/*0x08*/ void *dramAddr;
|
||||
/*0x0C*/ u32 devAddr;
|
||||
/*0x10*/ u32 size;
|
||||
OSPiHandle *piHandle; //from the official definition
|
||||
} OSIoMesg;
|
||||
|
||||
/* Definitions */
|
||||
|
||||
#define OS_READ 0 // device -> RDRAM
|
||||
#define OS_WRITE 1 // device <- RDRAM
|
||||
|
||||
#define OS_MESG_PRI_NORMAL 0
|
||||
#define OS_MESG_PRI_HIGH 1
|
||||
|
||||
/* Functions */
|
||||
|
||||
s32 osPiStartDma(OSIoMesg *mb, s32 priority, s32 direction,
|
||||
u32 devAddr, void *vAddr, u32 nbytes, OSMesgQueue *mq);
|
||||
void osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf,
|
||||
s32 cmdMsgCnt);
|
||||
OSMesgQueue *osPiGetCmdQueue(void);
|
||||
s32 osPiWriteIo(u32 devAddr, u32 data);
|
||||
s32 osPiReadIo(u32 devAddr, u32 *data);
|
||||
|
||||
#endif
|
|
@ -1,33 +0,0 @@
|
|||
#ifndef _ULTRA64_RDP_H_
|
||||
#define _ULTRA64_RDP_H_
|
||||
|
||||
/* DP Command Registers */
|
||||
|
||||
#define DPC_REG_BASE 0xA4100000
|
||||
|
||||
#define DPC_START_REG (*(vu32 *)(DPC_REG_BASE + 0x00))
|
||||
#define DPC_END_REG (*(vu32 *)(DPC_REG_BASE + 0x04))
|
||||
#define DPC_CURRENT_REG (*(vu32 *)(DPC_REG_BASE + 0x08))
|
||||
#define DPC_STATUS_REG (*(vu32 *)(DPC_REG_BASE + 0x0C))
|
||||
#define DPC_CLOCK_REG (*(vu32 *)(DPC_REG_BASE + 0x10))
|
||||
#define DPC_BUFBUSY_REG (*(vu32 *)(DPC_REG_BASE + 0x14))
|
||||
#define DPC_PIPEBUSY_REG (*(vu32 *)(DPC_REG_BASE + 0x18))
|
||||
#define DPC_TMEM_REG (*(vu32 *)(DPC_REG_BASE + 0x1C))
|
||||
|
||||
|
||||
/* DP Span Registers */
|
||||
|
||||
#define DPS_REG_BASE 0xA4200000
|
||||
|
||||
#define DPS_TBIST_REG (*(vu32 *)(DPS_REG_BASE + 0x00))
|
||||
#define DPS_TEST_MODE_REG (*(vu32 *)(DPS_REG_BASE + 0x04))
|
||||
#define DPS_BUFTEST_ADDR_REG (*(vu32 *)(DPS_REG_BASE + 0x08))
|
||||
#define DPS_BUFTEST_DATA_REG (*(vu32 *)(DPS_REG_BASE + 0x0C))
|
||||
|
||||
|
||||
/* Functions */
|
||||
|
||||
u32 osDpGetStatus(void);
|
||||
void osDpSetStatus(u32 status);
|
||||
|
||||
#endif
|
|
@ -1,114 +0,0 @@
|
|||
#ifndef _ULTRA64_SPTASK_H_
|
||||
#define _ULTRA64_SPTASK_H_
|
||||
|
||||
/* Task Types */
|
||||
#define M_GFXTASK 1
|
||||
#define M_AUDTASK 2
|
||||
#define M_VIDTASK 3
|
||||
#define M_HVQTASK 6
|
||||
#define M_HVQMTASK 7
|
||||
|
||||
//gGfxSPTaskYieldBuffer has to be changed for this too
|
||||
#if (defined(F3DEX_GBI) || defined(F3DLP_GBI) || defined(F3DEX_GBI_2))
|
||||
#define OS_YIELD_DATA_SIZE 0xc00
|
||||
#else
|
||||
#define OS_YIELD_DATA_SIZE 0x900
|
||||
#endif
|
||||
#define OS_YIELD_AUDIO_SIZE 0x400
|
||||
|
||||
/* Flags */
|
||||
#define M_TASK_FLAG0 1
|
||||
#define M_TASK_FLAG1 2
|
||||
|
||||
/* SpStatus */
|
||||
#define SPSTATUS_CLEAR_HALT 0x00000001
|
||||
#define SPSTATUS_SET_HALT 0x00000002
|
||||
#define SPSTATUS_CLEAR_BROKE 0x00000004
|
||||
#define SPSTATUS_CLEAR_INTR 0x00000008
|
||||
#define SPSTATUS_SET_INTR 0x00000010
|
||||
#define SPSTATUS_CLEAR_SSTEP 0x00000020
|
||||
#define SPSTATUS_SET_SSTEP 0x00000040
|
||||
#define SPSTATUS_CLEAR_INTR_ON_BREAK 0x00000080
|
||||
#define SPSTATUS_SET_INTR_ON_BREAK 0x00000100
|
||||
#define SPSTATUS_CLEAR_SIGNAL0 0x00000200
|
||||
#define SPSTATUS_SET_SIGNAL0 0x00000400
|
||||
#define SPSTATUS_CLEAR_SIGNAL1 0x00000800
|
||||
#define SPSTATUS_SET_SIGNAL1 0x00001000
|
||||
#define SPSTATUS_CLEAR_SIGNAL2 0x00002000
|
||||
#define SPSTATUS_SET_SIGNAL2 0x00004000
|
||||
#define SPSTATUS_CLEAR_SIGNAL3 0x00008000
|
||||
#define SPSTATUS_SET_SIGNAL3 0x00010000
|
||||
#define SPSTATUS_CLEAR_SIGNAL4 0x00020000
|
||||
#define SPSTATUS_SET_SIGNAL4 0x00040000
|
||||
#define SPSTATUS_CLEAR_SIGNAL5 0x00080000
|
||||
#define SPSTATUS_SET_SIGNAL5 0x00100000
|
||||
#define SPSTATUS_CLEAR_SIGNAL6 0x00200000
|
||||
#define SPSTATUS_SET_SIGNAL6 0x00800000
|
||||
#define SPSTATUS_CLEAR_SIGNAL7 0x01000000
|
||||
#define SPSTATUS_SET_SIGNAL7 0x02000000
|
||||
|
||||
#define SPSTATUS_HALT 0x0001
|
||||
#define SPSTATUS_BROKE 0x0002
|
||||
#define SPSTATUS_DMA_BUSY 0x0004
|
||||
#define SPSTATUS_DMA_FULL 0x0008
|
||||
#define SPSTATUS_IO_FULL 0x0010
|
||||
#define SPSTATUS_SINGLE_STEP 0x0020
|
||||
#define SPSTATUS_INTERRUPT_ON_BREAK 0x0040
|
||||
#define SPSTATUS_SIGNAL0_SET 0x0080
|
||||
#define SPSTATUS_SIGNAL1_SET 0x0100
|
||||
#define SPSTATUS_SIGNAL2_SET 0x0200
|
||||
#define SPSTATUS_SIGNAL3_SET 0x0400
|
||||
#define SPSTATUS_SIGNAL4_SET 0x0800
|
||||
#define SPSTATUS_SIGNAL5_SET 0x1000
|
||||
#define SPSTATUS_SIGNAL6_SET 0x2000
|
||||
#define SPSTATUS_SIGNAL7_SET 0x4000
|
||||
|
||||
/* Types */
|
||||
/* Types */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/*0x00*/ u32 type;
|
||||
/*0x04*/ u32 flags;
|
||||
|
||||
/*0x08*/ u64 *ucode_boot;
|
||||
/*0x0C*/ u32 ucode_boot_size;
|
||||
|
||||
/*0x10*/ u64 *ucode;
|
||||
/*0x14*/ u32 ucode_size;
|
||||
|
||||
/*0x18*/ u64 *ucode_data;
|
||||
/*0x1C*/ u32 ucode_data_size;
|
||||
|
||||
/*0x20*/ u64 *dram_stack;
|
||||
/*0x24*/ u32 dram_stack_size;
|
||||
|
||||
/*0x28*/ u64 *output_buff;
|
||||
/*0x2C*/ u64 *output_buff_size;
|
||||
|
||||
/*0x30*/ u64 *data_ptr;
|
||||
/*0x34*/ u32 data_size;
|
||||
|
||||
/*0x38*/ u64 *yield_data_ptr;
|
||||
/*0x3C*/ u32 yield_data_size;
|
||||
} OSTask_t; // size = 0x40
|
||||
|
||||
typedef union {
|
||||
OSTask_t t;
|
||||
long long int force_structure_alignment;
|
||||
} OSTask;
|
||||
|
||||
typedef u32 OSYieldResult;
|
||||
|
||||
/* Functions */
|
||||
|
||||
#define osSpTaskStart(p) \
|
||||
osSpTaskLoad(p); \
|
||||
osSpTaskStartGo(p);
|
||||
|
||||
void osSpTaskLoad(OSTask *task);
|
||||
void osSpTaskStartGo(OSTask *task);
|
||||
void osSpTaskYield(void);
|
||||
OSYieldResult osSpTaskYielded(OSTask *task);
|
||||
|
||||
#endif
|
|
@ -1,75 +0,0 @@
|
|||
#ifndef _ULTRA64_THREAD_H_
|
||||
#define _ULTRA64_THREAD_H_
|
||||
|
||||
/* Recommended priorities for system threads */
|
||||
#define OS_PRIORITY_MAX 255
|
||||
#define OS_PRIORITY_VIMGR 254
|
||||
#define OS_PRIORITY_RMON 250
|
||||
#define OS_PRIORITY_RMONSPIN 200
|
||||
#define OS_PRIORITY_PIMGR 150
|
||||
#define OS_PRIORITY_SIMGR 140
|
||||
#define OS_PRIORITY_APPMAX 127
|
||||
#define OS_PRIORITY_IDLE 0
|
||||
|
||||
#define OS_STATE_STOPPED 1
|
||||
#define OS_STATE_RUNNABLE 2
|
||||
#define OS_STATE_RUNNING 4
|
||||
#define OS_STATE_WAITING 8
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef s32 OSPri;
|
||||
typedef s32 OSId;
|
||||
|
||||
typedef union
|
||||
{
|
||||
struct {f32 f_odd; f32 f_even;} f;
|
||||
} __OSfp;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* registers */
|
||||
/*0x20*/ u64 at, v0, v1, a0, a1, a2, a3;
|
||||
/*0x58*/ u64 t0, t1, t2, t3, t4, t5, t6, t7;
|
||||
/*0x98*/ u64 s0, s1, s2, s3, s4, s5, s6, s7;
|
||||
/*0xD8*/ u64 t8, t9, gp, sp, s8, ra;
|
||||
/*0x108*/ u64 lo, hi;
|
||||
/*0x118*/ u32 sr, pc, cause, badvaddr, rcp;
|
||||
/*0x12C*/ u32 fpcsr;
|
||||
__OSfp fp0, fp2, fp4, fp6, fp8, fp10, fp12, fp14;
|
||||
__OSfp fp16, fp18, fp20, fp22, fp24, fp26, fp28, fp30;
|
||||
} __OSThreadContext;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 flag;
|
||||
u32 count;
|
||||
u64 time;
|
||||
} __OSThreadprofile_s;
|
||||
|
||||
typedef struct OSThread_s
|
||||
{
|
||||
/*0x00*/ struct OSThread_s *next;
|
||||
/*0x04*/ OSPri priority;
|
||||
/*0x08*/ struct OSThread_s **queue;
|
||||
/*0x0C*/ struct OSThread_s *tlnext;
|
||||
/*0x10*/ u16 state;
|
||||
/*0x12*/ u16 flags;
|
||||
/*0x14*/ OSId id;
|
||||
/*0x18*/ int fp;
|
||||
/*0x1C*/ __OSThreadprofile_s *thprof;
|
||||
/*0x20*/ __OSThreadContext context;
|
||||
} OSThread;
|
||||
|
||||
|
||||
/* Functions */
|
||||
|
||||
void osCreateThread(OSThread *thread, OSId id, void (*entry)(void *),
|
||||
void *arg, void *sp, OSPri pri);
|
||||
OSId osGetThreadId(OSThread *thread);
|
||||
OSPri osGetThreadPri(OSThread *thread);
|
||||
void osSetThreadPri(OSThread *thread, OSPri pri);
|
||||
void osStartThread(OSThread *thread);
|
||||
void osStopThread(OSThread *thread);
|
||||
|
||||
#endif
|
|
@ -1,25 +0,0 @@
|
|||
#ifndef _ULTRA64_TIME_H_
|
||||
#define _ULTRA64_TIME_H_
|
||||
#include "message.h"
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef struct OSTimer_str
|
||||
{
|
||||
struct OSTimer_str *next;
|
||||
struct OSTimer_str *prev;
|
||||
u64 interval;
|
||||
u64 remaining;
|
||||
OSMesgQueue *mq;
|
||||
OSMesg *msg;
|
||||
} OSTimer;
|
||||
|
||||
typedef u64 OSTime;
|
||||
|
||||
/* Functions */
|
||||
|
||||
OSTime osGetTime(void);
|
||||
void osSetTime(OSTime time);
|
||||
u32 osSetTimer(OSTimer *, OSTime, u64, OSMesgQueue *, OSMesg);
|
||||
|
||||
#endif
|
|
@ -1,25 +0,0 @@
|
|||
#ifndef _ULTRA64_TLB_H_
|
||||
#define _ULTRA64_TLB_H_
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef u32 OSPageMask;
|
||||
/* OSPageMask Valid Values */
|
||||
#define OS_PM_4K 0x0000000
|
||||
#define OS_PM_16K 0x0006000
|
||||
#define OS_PM_64K 0x001e000
|
||||
#define OS_PM_256K 0x007e000
|
||||
#define OS_PM_1M 0x01fe000
|
||||
#define OS_PM_4M 0x07fe000
|
||||
#define OS_PM_16M 0x1ffe000
|
||||
|
||||
/* Functions */
|
||||
|
||||
void osMapTLB(s32 index, OSPageMask pm, void *vaddr, u32 evenpaddr,
|
||||
u32 oddpaddr, s32 asid);
|
||||
void osMapTLBRdb(void);
|
||||
void osUnmapTLB(s32 index);
|
||||
void osUnmapTLBAll(void);
|
||||
void osSetTLBASID(s32 asid);
|
||||
|
||||
#endif
|
|
@ -1,41 +0,0 @@
|
|||
#ifndef _ULTRA64_TYPES_H_
|
||||
#define _ULTRA64_TYPES_H_
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL (void *)0
|
||||
#endif
|
||||
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
typedef signed char s8;
|
||||
typedef unsigned char u8;
|
||||
typedef signed short int s16;
|
||||
typedef unsigned short int u16;
|
||||
typedef signed int s32;
|
||||
typedef unsigned int u32;
|
||||
typedef signed long long int s64;
|
||||
typedef unsigned long long int u64;
|
||||
|
||||
typedef volatile u8 vu8;
|
||||
typedef volatile u16 vu16;
|
||||
typedef volatile u32 vu32;
|
||||
typedef volatile u64 vu64;
|
||||
typedef volatile s8 vs8;
|
||||
typedef volatile s16 vs16;
|
||||
typedef volatile s32 vs32;
|
||||
typedef volatile s64 vs64;
|
||||
|
||||
typedef float f32;
|
||||
typedef double f64;
|
||||
|
||||
typedef long int Mtx_t[4][4];
|
||||
typedef union
|
||||
{
|
||||
Mtx_t m;
|
||||
long long int forc_structure_alignment;
|
||||
} Mtx;
|
||||
|
||||
typedef unsigned long size_t;
|
||||
|
||||
#endif
|
|
@ -1,23 +0,0 @@
|
|||
#ifndef _ULTRA64_UCODE_H_
|
||||
#define _ULTRA64_UCODE_H_
|
||||
|
||||
#define SP_DRAM_STACK_SIZE8 0x400
|
||||
#define SP_UCODE_SIZE 0x1000
|
||||
#define SP_UCODE_DATA_SIZE 0x800
|
||||
|
||||
// standard boot ucode
|
||||
extern u64 rspF3DBootStart[], rspF3DBootEnd[];
|
||||
|
||||
// F3D ucode
|
||||
extern u64 rspF3DStart[], rspF3DEnd[];
|
||||
|
||||
// F3D data ucode
|
||||
extern u64 rspF3DDataStart[], rspF3DDataEnd[];
|
||||
|
||||
// F3D audio ucode
|
||||
extern u64 rspF3DAudioStart[], rspF3DAudioEnd[];
|
||||
|
||||
// F3D audio data ucode
|
||||
extern u64 rspF3DAudioDataStart[], rspF3DAudioDataEnd[];
|
||||
|
||||
#endif
|
|
@ -1,143 +0,0 @@
|
|||
#ifndef _ULTRA64_VI_H_
|
||||
#define _ULTRA64_VI_H_
|
||||
|
||||
/* Ultra64 Video Interface */
|
||||
|
||||
|
||||
/* Special Features */
|
||||
#define OS_VI_GAMMA_ON 0x0001
|
||||
#define OS_VI_GAMMA_OFF 0x0002
|
||||
#define OS_VI_GAMMA_DITHER_ON 0x0004
|
||||
#define OS_VI_GAMMA_DITHER_OFF 0x0008
|
||||
#define OS_VI_DIVOT_ON 0x0010
|
||||
#define OS_VI_DIVOT_OFF 0x0020
|
||||
#define OS_VI_DITHER_FILTER_ON 0x0040
|
||||
#define OS_VI_DITHER_FILTER_OFF 0x0080
|
||||
|
||||
#define OS_VI_GAMMA 0x08
|
||||
#define OS_VI_GAMMA_DITHER 0x04
|
||||
#define OS_VI_DIVOT 0x10
|
||||
#define OS_VI_DITHER_FILTER 0x10000
|
||||
#define OS_VI_UNK200 0x200
|
||||
#define OS_VI_UNK100 0x100
|
||||
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 ctrl;
|
||||
u32 width;
|
||||
u32 burst;
|
||||
u32 vSync;
|
||||
u32 hSync;
|
||||
u32 leap;
|
||||
u32 hStart;
|
||||
u32 xScale;
|
||||
u32 vCurrent;
|
||||
} OSViCommonRegs;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 origin;
|
||||
u32 yScale;
|
||||
u32 vStart;
|
||||
u32 vBurst;
|
||||
u32 vIntr;
|
||||
} OSViFieldRegs;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 type;
|
||||
OSViCommonRegs comRegs;
|
||||
OSViFieldRegs fldRegs[2];
|
||||
} OSViMode;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* 0x00 */ u16 unk00; //some kind of flags. swap buffer sets to 0x10
|
||||
/* 0x02 */ u16 retraceCount;
|
||||
/* 0x04 */ void* buffer;
|
||||
/* 0x08 */ OSViMode *unk08;
|
||||
/* 0x0c */ u32 features;
|
||||
/* 0x10 */ OSMesgQueue *mq;
|
||||
/* 0x14 */ OSMesg *msg;
|
||||
/* 0x18 */ u32 unk18;
|
||||
/* 0x1c */ u32 unk1c;
|
||||
/* 0x20 */ u32 unk20;
|
||||
/* 0x24 */ f32 unk24;
|
||||
/* 0x28 */ u16 unk28;
|
||||
/* 0x2c */ u32 unk2c;
|
||||
} OSViContext;
|
||||
|
||||
void osCreateViManager(OSPri pri);
|
||||
void osViSetMode(OSViMode *mode);
|
||||
void osViBlack(u8 active);
|
||||
void osViSetSpecialFeatures(u32 func);
|
||||
void osViSwapBuffer(void *vaddr);
|
||||
|
||||
|
||||
#define OS_VI_NTSC_LPN1 0 /* NTSC */
|
||||
#define OS_VI_NTSC_LPF1 1
|
||||
#define OS_VI_NTSC_LAN1 2
|
||||
#define OS_VI_NTSC_LAF1 3
|
||||
#define OS_VI_NTSC_LPN2 4
|
||||
#define OS_VI_NTSC_LPF2 5
|
||||
#define OS_VI_NTSC_LAN2 6
|
||||
#define OS_VI_NTSC_LAF2 7
|
||||
#define OS_VI_NTSC_HPN1 8
|
||||
#define OS_VI_NTSC_HPF1 9
|
||||
#define OS_VI_NTSC_HAN1 10
|
||||
#define OS_VI_NTSC_HAF1 11
|
||||
#define OS_VI_NTSC_HPN2 12
|
||||
#define OS_VI_NTSC_HPF2 13
|
||||
|
||||
#define OS_VI_PAL_LPN1 14 /* PAL */
|
||||
#define OS_VI_PAL_LPF1 15
|
||||
#define OS_VI_PAL_LAN1 16
|
||||
#define OS_VI_PAL_LAF1 17
|
||||
#define OS_VI_PAL_LPN2 18
|
||||
#define OS_VI_PAL_LPF2 19
|
||||
#define OS_VI_PAL_LAN2 20
|
||||
#define OS_VI_PAL_LAF2 21
|
||||
#define OS_VI_PAL_HPN1 22
|
||||
#define OS_VI_PAL_HPF1 23
|
||||
#define OS_VI_PAL_HAN1 24
|
||||
#define OS_VI_PAL_HAF1 25
|
||||
#define OS_VI_PAL_HPN2 26
|
||||
#define OS_VI_PAL_HPF2 27
|
||||
|
||||
#define OS_VI_MPAL_LPN1 28 /* MPAL - mainly Brazil */
|
||||
#define OS_VI_MPAL_LPF1 29
|
||||
#define OS_VI_MPAL_LAN1 30
|
||||
#define OS_VI_MPAL_LAF1 31
|
||||
#define OS_VI_MPAL_LPN2 32
|
||||
#define OS_VI_MPAL_LPF2 33
|
||||
#define OS_VI_MPAL_LAN2 34
|
||||
#define OS_VI_MPAL_LAF2 35
|
||||
#define OS_VI_MPAL_HPN1 36
|
||||
#define OS_VI_MPAL_HPF1 37
|
||||
#define OS_VI_MPAL_HAN1 38
|
||||
#define OS_VI_MPAL_HAF1 39
|
||||
#define OS_VI_MPAL_HPN2 40
|
||||
#define OS_VI_MPAL_HPF2 41
|
||||
|
||||
#define OS_VI_FPAL_LPN1 42 /* FPAL - Full screen PAL */
|
||||
#define OS_VI_FPAL_LPF1 43
|
||||
#define OS_VI_FPAL_LAN1 44
|
||||
#define OS_VI_FPAL_LAF1 45
|
||||
#define OS_VI_FPAL_LPN2 46
|
||||
#define OS_VI_FPAL_LPF2 47
|
||||
#define OS_VI_FPAL_LAN2 48
|
||||
#define OS_VI_FPAL_LAF2 49
|
||||
#define OS_VI_FPAL_HPN1 50
|
||||
#define OS_VI_FPAL_HPF1 51
|
||||
#define OS_VI_FPAL_HAN1 52
|
||||
#define OS_VI_FPAL_HAF1 53
|
||||
#define OS_VI_FPAL_HPN2 54
|
||||
#define OS_VI_FPAL_HPF2 55
|
||||
|
||||
extern OSViMode osViModeTable[]; /* Global VI mode table */
|
||||
|
||||
|
||||
#endif
|
|
@ -1,12 +0,0 @@
|
|||
#ifndef _UNUSED_H_
|
||||
#define _UNUSED_H_
|
||||
|
||||
// Avoid compiler warnings for unused variables
|
||||
#ifdef __GNUC__
|
||||
#define UNUSED __attribute__((unused))
|
||||
#else
|
||||
#define UNUSED
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
|
@ -1,18 +0,0 @@
|
|||
.set noreorder # don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
|
||||
glabel __osDisableInt
|
||||
mfc0 $t0, $12
|
||||
and $t1, $t0, -2
|
||||
mtc0 $t1, $12
|
||||
andi $v0, $t0, 1
|
||||
nop
|
||||
jr $ra
|
||||
nop
|
||||
|
|
@ -1,648 +0,0 @@
|
|||
|
||||
.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
|
||||
lui $k0, %hi(__osException) # $k0, 0x8032
|
||||
addiu $k0, %lo(__osException) # addiu $k0, $k0, 0x66d0
|
||||
jr $k0
|
||||
nop
|
||||
|
||||
|
||||
glabel __osException
|
||||
/* 0E16D0 803266D0 3C1A8036 */ lui $k0, %hi(gInterruptedThread) # $k0, 0x8036
|
||||
/* 0E16D4 803266D4 275A5F40 */ addiu $k0, %lo(gInterruptedThread) # addiu $k0, $k0, 0x5f40
|
||||
/* 0E16D8 803266D8 FF410020 */ sd $at, 0x20($k0)
|
||||
/* 0E16DC 803266DC 401B6000 */ mfc0 $k1, $12
|
||||
/* 0E16E0 803266E0 AF5B0118 */ sw $k1, 0x118($k0)
|
||||
/* 0E16E4 803266E4 2401FFFC */ li $at, -4
|
||||
/* 0E16E8 803266E8 0361D824 */ and $k1, $k1, $at
|
||||
/* 0E16EC 803266EC 409B6000 */ mtc0 $k1, $12
|
||||
/* 0E16F0 803266F0 FF480058 */ sd $t0, 0x58($k0)
|
||||
/* 0E16F4 803266F4 FF490060 */ sd $t1, 0x60($k0)
|
||||
/* 0E16F8 803266F8 FF4A0068 */ sd $t2, 0x68($k0)
|
||||
/* 0E16FC 803266FC AF400018 */ sw $zero, 0x18($k0)
|
||||
/* 0E1700 80326700 40086800 */ mfc0 $t0, $13
|
||||
/* 0E1704 80326704 3109007C */ andi $t1, $t0, 0x7c
|
||||
/* 0E1708 80326708 240A0000 */ li $t2, 0
|
||||
/* 0E170C 8032670C 152A0010 */ bne $t1, $t2, .L80326750
|
||||
/* 0E1710 80326710 00000000 */ nop
|
||||
/* 0E1714 80326714 03684824 */ and $t1, $k1, $t0
|
||||
/* 0E1718 80326718 312A4000 */ andi $t2, $t1, 0x4000
|
||||
/* 0E171C 8032671C 11400005 */ beqz $t2, .L80326734
|
||||
/* 0E1720 80326720 00000000 */ nop
|
||||
/* 0E1724 80326724 24090001 */ li $t1, 1
|
||||
/* 0E1728 80326728 3C018033 */ lui $at, %hi(D_80334934) # $at, 0x8033
|
||||
/* 0E172C 8032672C 10000019 */ b .L80326794
|
||||
/* 0E1730 80326730 AC294934 */ sw $t1, %lo(D_80334934)($at)
|
||||
.L80326734:
|
||||
/* 0E1734 80326734 312A2000 */ andi $t2, $t1, 0x2000
|
||||
/* 0E1738 80326738 11400005 */ beqz $t2, .L80326750
|
||||
/* 0E173C 8032673C 00000000 */ nop
|
||||
/* 0E1740 80326740 24090001 */ li $t1, 1
|
||||
/* 0E1744 80326744 3C018033 */ lui $at, %hi(D_80334938) # $at, 0x8033
|
||||
/* 0E1748 80326748 10000012 */ b .L80326794
|
||||
/* 0E174C 8032674C AC294938 */ sw $t1, %lo(D_80334938)($at)
|
||||
.L80326750:
|
||||
/* 0E1750 80326750 3C018033 */ lui $at, %hi(D_80334934) # $at, 0x8033
|
||||
/* 0E1754 80326754 AC204934 */ sw $zero, %lo(D_80334934)($at)
|
||||
/* 0E1758 80326758 3C018033 */ lui $at, %hi(D_80334938) # $at, 0x8033
|
||||
/* 0E175C 8032675C 03404025 */ move $t0, $k0
|
||||
/* 0E1760 80326760 AC204938 */ sw $zero, %lo(D_80334938)($at)
|
||||
/* 0E1764 80326764 3C1A8033 */ lui $k0, %hi(D_803348A0) # $k0, 0x8033
|
||||
/* 0E1768 80326768 8F5A48A0 */ lw $k0, %lo(D_803348A0)($k0)
|
||||
/* 0E176C 8032676C DD090020 */ ld $t1, 0x20($t0)
|
||||
/* 0E1770 80326770 FF490020 */ sd $t1, 0x20($k0)
|
||||
/* 0E1774 80326774 DD090118 */ ld $t1, 0x118($t0)
|
||||
/* 0E1778 80326778 FF490118 */ sd $t1, 0x118($k0)
|
||||
/* 0E177C 8032677C DD090058 */ ld $t1, 0x58($t0)
|
||||
/* 0E1780 80326780 FF490058 */ sd $t1, 0x58($k0)
|
||||
/* 0E1784 80326784 DD090060 */ ld $t1, 0x60($t0)
|
||||
/* 0E1788 80326788 FF490060 */ sd $t1, 0x60($k0)
|
||||
/* 0E178C 8032678C DD090068 */ ld $t1, 0x68($t0)
|
||||
/* 0E1790 80326790 FF490068 */ sd $t1, 0x68($k0)
|
||||
.L80326794:
|
||||
/* 0E1794 80326794 00004012 */ mflo $t0
|
||||
/* 0E1798 80326798 FF480108 */ sd $t0, 0x108($k0)
|
||||
/* 0E179C 8032679C 00004010 */ mfhi $t0
|
||||
/* 0E17A0 803267A0 FF420028 */ sd $v0, 0x28($k0)
|
||||
/* 0E17A4 803267A4 FF430030 */ sd $v1, 0x30($k0)
|
||||
/* 0E17A8 803267A8 FF440038 */ sd $a0, 0x38($k0)
|
||||
/* 0E17AC 803267AC FF450040 */ sd $a1, 0x40($k0)
|
||||
/* 0E17B0 803267B0 FF460048 */ sd $a2, 0x48($k0)
|
||||
/* 0E17B4 803267B4 FF470050 */ sd $a3, 0x50($k0)
|
||||
/* 0E17B8 803267B8 FF4B0070 */ sd $t3, 0x70($k0)
|
||||
/* 0E17BC 803267BC FF4C0078 */ sd $t4, 0x78($k0)
|
||||
/* 0E17C0 803267C0 FF4D0080 */ sd $t5, 0x80($k0)
|
||||
/* 0E17C4 803267C4 FF4E0088 */ sd $t6, 0x88($k0)
|
||||
/* 0E17C8 803267C8 FF4F0090 */ sd $t7, 0x90($k0)
|
||||
/* 0E17CC 803267CC FF500098 */ sd $s0, 0x98($k0)
|
||||
/* 0E17D0 803267D0 FF5100A0 */ sd $s1, 0xa0($k0)
|
||||
/* 0E17D4 803267D4 FF5200A8 */ sd $s2, 0xa8($k0)
|
||||
/* 0E17D8 803267D8 FF5300B0 */ sd $s3, 0xb0($k0)
|
||||
/* 0E17DC 803267DC FF5400B8 */ sd $s4, 0xb8($k0)
|
||||
/* 0E17E0 803267E0 FF5500C0 */ sd $s5, 0xc0($k0)
|
||||
/* 0E17E4 803267E4 FF5600C8 */ sd $s6, 0xc8($k0)
|
||||
/* 0E17E8 803267E8 FF5700D0 */ sd $s7, 0xd0($k0)
|
||||
/* 0E17EC 803267EC FF5800D8 */ sd $t8, 0xd8($k0)
|
||||
/* 0E17F0 803267F0 FF5900E0 */ sd $t9, 0xe0($k0)
|
||||
/* 0E17F4 803267F4 FF5C00E8 */ sd $gp, 0xe8($k0)
|
||||
/* 0E17F8 803267F8 FF5D00F0 */ sd $sp, 0xf0($k0)
|
||||
/* 0E17FC 803267FC FF5E00F8 */ sd $fp, 0xf8($k0)
|
||||
/* 0E1800 80326800 FF5F0100 */ sd $ra, 0x100($k0)
|
||||
/* 0E1804 80326804 FF480110 */ sd $t0, 0x110($k0)
|
||||
/* 0E1808 80326808 40087000 */ mfc0 $t0, $14
|
||||
/* 0E180C 8032680C AF48011C */ sw $t0, 0x11c($k0)
|
||||
/* 0E1810 80326810 8F480018 */ lw $t0, 0x18($k0)
|
||||
/* 0E1814 80326814 11000014 */ beqz $t0, .L80326868
|
||||
/* 0E1818 80326818 00000000 */ nop
|
||||
/* 0E181C 8032681C 4448F800 */ cfc1 $t0, $31
|
||||
/* 0E1820 80326820 00000000 */ nop
|
||||
/* 0E1824 80326824 AF48012C */ sw $t0, 0x12c($k0)
|
||||
/* 0E1828 80326828 F7400130 */ sdc1 $f0, 0x130($k0)
|
||||
/* 0E182C 8032682C F7420138 */ sdc1 $f2, 0x138($k0)
|
||||
/* 0E1830 80326830 F7440140 */ sdc1 $f4, 0x140($k0)
|
||||
/* 0E1834 80326834 F7460148 */ sdc1 $f6, 0x148($k0)
|
||||
/* 0E1838 80326838 F7480150 */ sdc1 $f8, 0x150($k0)
|
||||
/* 0E183C 8032683C F74A0158 */ sdc1 $f10, 0x158($k0)
|
||||
/* 0E1840 80326840 F74C0160 */ sdc1 $f12, 0x160($k0)
|
||||
/* 0E1844 80326844 F74E0168 */ sdc1 $f14, 0x168($k0)
|
||||
/* 0E1848 80326848 F7500170 */ sdc1 $f16, 0x170($k0)
|
||||
/* 0E184C 8032684C F7520178 */ sdc1 $f18, 0x178($k0)
|
||||
/* 0E1850 80326850 F7540180 */ sdc1 $f20, 0x180($k0)
|
||||
/* 0E1854 80326854 F7560188 */ sdc1 $f22, 0x188($k0)
|
||||
/* 0E1858 80326858 F7580190 */ sdc1 $f24, 0x190($k0)
|
||||
/* 0E185C 8032685C F75A0198 */ sdc1 $f26, 0x198($k0)
|
||||
/* 0E1860 80326860 F75C01A0 */ sdc1 $f28, 0x1a0($k0)
|
||||
/* 0E1864 80326864 F75E01A8 */ sdc1 $f30, 0x1a8($k0)
|
||||
.L80326868:
|
||||
/* 0E1868 80326868 40086800 */ mfc0 $t0, $13
|
||||
/* 0E186C 8032686C AF480120 */ sw $t0, 0x120($k0)
|
||||
/* 0E1870 80326870 3C09A430 */ lui $t1, %hi(D_A430000C) # $t1, 0xa430
|
||||
/* 0E1874 80326874 8D29000C */ lw $t1, %lo(D_A430000C)($t1)
|
||||
/* 0E1878 80326878 AF490128 */ sw $t1, 0x128($k0)
|
||||
/* 0E187C 8032687C 24090002 */ li $t1, 2
|
||||
/* 0E1880 80326880 A7490010 */ sh $t1, 0x10($k0)
|
||||
/* 0E1884 80326884 3C098033 */ lui $t1, %hi(D_80334934) # $t1, 0x8033
|
||||
/* 0E1888 80326888 8D294934 */ lw $t1, %lo(D_80334934)($t1)
|
||||
/* 0E188C 8032688C 11200009 */ beqz $t1, .L803268B4
|
||||
/* 0E1890 80326890 00000000 */ nop
|
||||
/* 0E1894 80326894 3C0AC000 */ lui $t2, %hi(D_C0000008) # $t2, 0xc000
|
||||
/* 0E1898 80326898 AD400008 */ sw $zero, %lo(D_C0000008)($t2)
|
||||
/* 0E189C 8032689C 3C04C000 */ lui $a0, 0xc000
|
||||
/* 0E18A0 803268A0 254A0008 */ addiu $t2, %lo(D_C0000008) # addiu $t2, $t2, 8
|
||||
/* 0E18A4 803268A4 0C0CA6EE */ jal kdebugserver
|
||||
/* 0E18A8 803268A8 8C840000 */ lw $a0, ($a0)
|
||||
/* 0E18AC 803268AC 10000156 */ b .L80326E08
|
||||
/* 0E18B0 803268B0 00000000 */ nop
|
||||
.L803268B4:
|
||||
/* 0E18B4 803268B4 3C098033 */ lui $t1, %hi(D_80334938) # $t1, 0x8033
|
||||
/* 0E18B8 803268B8 8D294938 */ lw $t1, %lo(D_80334938)($t1)
|
||||
/* 0E18BC 803268BC 11200010 */ beqz $t1, .L80326900
|
||||
/* 0E18C0 803268C0 00000000 */ nop
|
||||
/* 0E18C4 803268C4 3C0AC000 */ lui $t2, %hi(D_C000000C) # $t2, 0xc000
|
||||
/* 0E18C8 803268C8 AD40000C */ sw $zero, %lo(D_C000000C)($t2)
|
||||
/* 0E18CC 803268CC 3C098033 */ lui $t1, %hi(D_80334A40) # $t1, 0x8033
|
||||
/* 0E18D0 803268D0 8D294A40 */ lw $t1, %lo(D_80334A40)($t1)
|
||||
/* 0E18D4 803268D4 254A000C */ addiu $t2, %lo(D_C000000C) # addiu $t2, $t2, 0xc
|
||||
/* 0E18D8 803268D8 11200003 */ beqz $t1, .L803268E8
|
||||
/* 0E18DC 803268DC 00000000 */ nop
|
||||
/* 0E18E0 803268E0 0C0C9B06 */ jal send_mesg
|
||||
/* 0E18E4 803268E4 24040078 */ li $a0, 120
|
||||
.L803268E8:
|
||||
/* 0E18E8 803268E8 3C098033 */ lui $t1, %hi(D_80334A44) # $t1, 0x8033
|
||||
/* 0E18EC 803268EC 8D294A44 */ lw $t1, %lo(D_80334A44)($t1)
|
||||
/* 0E18F0 803268F0 3C018033 */ lui $at, %hi(D_80334A44) # $at, 0x8033
|
||||
/* 0E18F4 803268F4 21290001 */ addi $t1, $t1, 1
|
||||
/* 0E18F8 803268F8 10000143 */ b .L80326E08
|
||||
/* 0E18FC 803268FC AC294A44 */ sw $t1, %lo(D_80334A44)($at)
|
||||
.L80326900:
|
||||
/* 0E1900 80326900 3109007C */ andi $t1, $t0, 0x7c
|
||||
/* 0E1904 80326904 240A0024 */ li $t2, 36
|
||||
/* 0E1908 80326908 112A009E */ beq $t1, $t2, .L80326B84
|
||||
/* 0E190C 8032690C 00000000 */ nop
|
||||
/* 0E1910 80326910 240A002C */ li $t2, 44
|
||||
/* 0E1914 80326914 112A00ED */ beq $t1, $t2, .L80326CCC
|
||||
/* 0E1918 80326918 00000000 */ nop
|
||||
/* 0E191C 8032691C 240A0000 */ li $t2, 0
|
||||
/* 0E1920 80326920 152A00B1 */ bne $t1, $t2, .L80326BE8
|
||||
/* 0E1924 80326924 00000000 */ nop
|
||||
/* 0E1928 80326928 03688024 */ and $s0, $k1, $t0
|
||||
.L8032692C:
|
||||
/* 0E192C 8032692C 3209FF00 */ andi $t1, $s0, 0xff00
|
||||
/* 0E1930 80326930 00095302 */ srl $t2, $t1, 0xc
|
||||
/* 0E1934 80326934 15400003 */ bnez $t2, .L80326944
|
||||
/* 0E1938 80326938 00000000 */ nop
|
||||
/* 0E193C 8032693C 00095202 */ srl $t2, $t1, 8
|
||||
/* 0E1940 80326940 214A0010 */ addi $t2, $t2, 0x10
|
||||
.L80326944:
|
||||
/* 0E1944 80326944 3C018034 */ lui $at, %hi(D_80338610)
|
||||
/* 0E1948 80326948 002A0821 */ addu $at, $at, $t2
|
||||
/* 0E194C 8032694C 902A8610 */ lbu $t2, %lo(D_80338610)($at)
|
||||
/* 0E1950 80326950 3C018034 */ lui $at, %hi(jtbl_80338630)
|
||||
/* 0E1954 80326954 002A0821 */ addu $at, $at, $t2
|
||||
/* 0E1958 80326958 8C2A8630 */ lw $t2, %lo(jtbl_80338630)($at)
|
||||
/* 0E195C 8032695C 01400008 */ jr $t2
|
||||
/* 0E1960 80326960 00000000 */ nop
|
||||
glabel L80326964
|
||||
/* 0E1964 80326964 40095800 */ mfc0 $t1, $11
|
||||
/* 0E1968 80326968 40895800 */ mtc0 $t1, $11
|
||||
/* 0E196C 8032696C 0C0C9B06 */ jal send_mesg
|
||||
/* 0E1970 80326970 24040018 */ li $a0, 24
|
||||
/* 0E1974 80326974 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff
|
||||
/* 0E1978 80326978 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff
|
||||
/* 0E197C 8032697C 1000FFEB */ b .L8032692C
|
||||
/* 0E1980 80326980 02018024 */ and $s0, $s0, $at
|
||||
glabel L80326984
|
||||
/* 0E1984 80326984 240A0004 */ li $t2, 4
|
||||
/* 0E1988 80326988 3C018033 */ lui $at, %hi(D_80334920)
|
||||
/* 0E198C 8032698C 002A0821 */ addu $at, $at, $t2
|
||||
/* 0E1990 80326990 8C2A4920 */ lw $t2, %lo(D_80334920)($at)
|
||||
/* 0E1994 80326994 11400003 */ beqz $t2, .L803269A4
|
||||
/* 0E1998 80326998 00000000 */ nop
|
||||
/* 0E199C 8032699C 0140F809 */ jalr $t2
|
||||
/* 0E19A0 803269A0 00000000 */ nop
|
||||
.L803269A4:
|
||||
/* 0E19A4 803269A4 0C0C9B06 */ jal send_mesg
|
||||
/* 0E19A8 803269A8 24040010 */ li $a0, 16
|
||||
/* 0E19AC 803269AC 2401F7FF */ li $at, -2049
|
||||
/* 0E19B0 803269B0 1000FFDE */ b .L8032692C
|
||||
/* 0E19B4 803269B4 02018024 */ and $s0, $s0, $at
|
||||
glabel L803269B8
|
||||
/* 0E19B8 803269B8 3C11A430 */ lui $s1, %hi(D_A4300008) # $s1, 0xa430
|
||||
/* 0E19BC 803269BC 8E310008 */ lw $s1, %lo(D_A4300008)($s1)
|
||||
/* 0E19C0 803269C0 3231003F */ andi $s1, $s1, 0x3f
|
||||
/* 0E19C4 803269C4 32290001 */ andi $t1, $s1, 1
|
||||
/* 0E19C8 803269C8 11200013 */ beqz $t1, .L80326A18
|
||||
/* 0E19CC 803269CC 00000000 */ nop
|
||||
/* 0E19D0 803269D0 3C0CA404 */ lui $t4, %hi(D_A4040010) # $t4, 0xa404
|
||||
/* 0E19D4 803269D4 8D8C0010 */ lw $t4, %lo(D_A4040010)($t4)
|
||||
/* 0E19D8 803269D8 24090008 */ li $t1, 8
|
||||
/* 0E19DC 803269DC 3C01A404 */ lui $at, %hi(D_A4040010) # $at, 0xa404
|
||||
/* 0E19E0 803269E0 318C0300 */ andi $t4, $t4, 0x300
|
||||
/* 0E19E4 803269E4 3231003E */ andi $s1, $s1, 0x3e
|
||||
/* 0E19E8 803269E8 11800007 */ beqz $t4, .L80326A08
|
||||
/* 0E19EC 803269EC AC290010 */ sw $t1, %lo(D_A4040010)($at)
|
||||
/* 0E19F0 803269F0 0C0C9B06 */ jal send_mesg
|
||||
/* 0E19F4 803269F4 24040020 */ li $a0, 32
|
||||
/* 0E19F8 803269F8 12200038 */ beqz $s1, .L80326ADC
|
||||
/* 0E19FC 803269FC 00000000 */ nop
|
||||
/* 0E1A00 80326A00 10000005 */ b .L80326A18
|
||||
/* 0E1A04 80326A04 00000000 */ nop
|
||||
.L80326A08:
|
||||
/* 0E1A08 80326A08 0C0C9B06 */ jal send_mesg
|
||||
/* 0E1A0C 80326A0C 24040058 */ li $a0, 88
|
||||
/* 0E1A10 80326A10 12200032 */ beqz $s1, .L80326ADC
|
||||
/* 0E1A14 80326A14 00000000 */ nop
|
||||
.L80326A18:
|
||||
/* 0E1A18 80326A18 32290008 */ andi $t1, $s1, 8
|
||||
/* 0E1A1C 80326A1C 11200007 */ beqz $t1, .L80326A3C
|
||||
/* 0E1A20 80326A20 3C01A440 */ lui $at, %hi(D_A4400010) # $at, 0xa440
|
||||
/* 0E1A24 80326A24 32310037 */ andi $s1, $s1, 0x37
|
||||
/* 0E1A28 80326A28 AC200010 */ sw $zero, %lo(D_A4400010)($at)
|
||||
/* 0E1A2C 80326A2C 0C0C9B06 */ jal send_mesg
|
||||
/* 0E1A30 80326A30 24040038 */ li $a0, 56
|
||||
/* 0E1A34 80326A34 12200029 */ beqz $s1, .L80326ADC
|
||||
/* 0E1A38 80326A38 00000000 */ nop
|
||||
.L80326A3C:
|
||||
/* 0E1A3C 80326A3C 32290004 */ andi $t1, $s1, 4
|
||||
/* 0E1A40 80326A40 11200009 */ beqz $t1, .L80326A68
|
||||
/* 0E1A44 80326A44 00000000 */ nop
|
||||
/* 0E1A48 80326A48 24090001 */ li $t1, 1
|
||||
/* 0E1A4C 80326A4C 3C01A450 */ lui $at, %hi(D_A450000C) # $at, 0xa450
|
||||
/* 0E1A50 80326A50 3231003B */ andi $s1, $s1, 0x3b
|
||||
/* 0E1A54 80326A54 AC29000C */ sw $t1, %lo(D_A450000C)($at)
|
||||
/* 0E1A58 80326A58 0C0C9B06 */ jal send_mesg
|
||||
/* 0E1A5C 80326A5C 24040030 */ li $a0, 48
|
||||
/* 0E1A60 80326A60 1220001E */ beqz $s1, .L80326ADC
|
||||
/* 0E1A64 80326A64 00000000 */ nop
|
||||
.L80326A68:
|
||||
/* 0E1A68 80326A68 32290002 */ andi $t1, $s1, 2
|
||||
/* 0E1A6C 80326A6C 11200007 */ beqz $t1, .L80326A8C
|
||||
/* 0E1A70 80326A70 3C01A480 */ lui $at, %hi(D_A4800018) # $at, 0xa480
|
||||
/* 0E1A74 80326A74 3231003D */ andi $s1, $s1, 0x3d
|
||||
/* 0E1A78 80326A78 AC200018 */ sw $zero, %lo(D_A4800018)($at)
|
||||
/* 0E1A7C 80326A7C 0C0C9B06 */ jal send_mesg
|
||||
/* 0E1A80 80326A80 24040028 */ li $a0, 40
|
||||
/* 0E1A84 80326A84 12200015 */ beqz $s1, .L80326ADC
|
||||
/* 0E1A88 80326A88 00000000 */ nop
|
||||
.L80326A8C:
|
||||
/* 0E1A8C 80326A8C 32290010 */ andi $t1, $s1, 0x10
|
||||
/* 0E1A90 80326A90 11200009 */ beqz $t1, .L80326AB8
|
||||
/* 0E1A94 80326A94 00000000 */ nop
|
||||
/* 0E1A98 80326A98 24090002 */ li $t1, 2
|
||||
/* 0E1A9C 80326A9C 3C01A460 */ lui $at, %hi(D_A4600010) # $at, 0xa460
|
||||
/* 0E1AA0 80326AA0 3231002F */ andi $s1, $s1, 0x2f
|
||||
/* 0E1AA4 80326AA4 AC290010 */ sw $t1, %lo(D_A4600010)($at)
|
||||
/* 0E1AA8 80326AA8 0C0C9B06 */ jal send_mesg
|
||||
/* 0E1AAC 80326AAC 24040040 */ li $a0, 64
|
||||
/* 0E1AB0 80326AB0 1220000A */ beqz $s1, .L80326ADC
|
||||
/* 0E1AB4 80326AB4 00000000 */ nop
|
||||
.L80326AB8:
|
||||
/* 0E1AB8 80326AB8 32290020 */ andi $t1, $s1, 0x20
|
||||
/* 0E1ABC 80326ABC 11200007 */ beqz $t1, .L80326ADC
|
||||
/* 0E1AC0 80326AC0 00000000 */ nop
|
||||
/* 0E1AC4 80326AC4 24090800 */ li $t1, 2048
|
||||
/* 0E1AC8 80326AC8 3C01A430 */ lui $at, 0xa430
|
||||
/* 0E1ACC 80326ACC 3231001F */ andi $s1, $s1, 0x1f
|
||||
/* 0E1AD0 80326AD0 AC290000 */ sw $t1, ($at)
|
||||
/* 0E1AD4 80326AD4 0C0C9B06 */ jal send_mesg
|
||||
/* 0E1AD8 80326AD8 24040048 */ li $a0, 72
|
||||
.L80326ADC:
|
||||
/* 0E1ADC 80326ADC 2401FBFF */ li $at, -1025
|
||||
/* 0E1AE0 80326AE0 1000FF92 */ b .L8032692C
|
||||
/* 0E1AE4 80326AE4 02018024 */ and $s0, $s0, $at
|
||||
glabel L80326AE8
|
||||
/* 0E1AE8 80326AE8 8F5B0118 */ lw $k1, 0x118($k0)
|
||||
/* 0E1AEC 80326AEC 2401EFFF */ li $at, -4097
|
||||
/* 0E1AF0 80326AF0 3C098033 */ lui $t1, %hi(D_80334808) # $t1, 0x8033
|
||||
/* 0E1AF4 80326AF4 0361D824 */ and $k1, $k1, $at
|
||||
/* 0E1AF8 80326AF8 AF5B0118 */ sw $k1, 0x118($k0)
|
||||
/* 0E1AFC 80326AFC 25294808 */ addiu $t1, %lo(D_80334808) # addiu $t1, $t1, 0x4808
|
||||
/* 0E1B00 80326B00 8D2A0000 */ lw $t2, ($t1)
|
||||
/* 0E1B04 80326B04 11400003 */ beqz $t2, .L80326B14
|
||||
/* 0E1B08 80326B08 2401EFFF */ li $at, -4097
|
||||
/* 0E1B0C 80326B0C 10000023 */ b .L80326B9C
|
||||
/* 0E1B10 80326B10 02018024 */ and $s0, $s0, $at
|
||||
.L80326B14:
|
||||
/* 0E1B14 80326B14 240A0001 */ li $t2, 1
|
||||
/* 0E1B18 80326B18 AD2A0000 */ sw $t2, ($t1)
|
||||
/* 0E1B1C 80326B1C 0C0C9B06 */ jal send_mesg
|
||||
/* 0E1B20 80326B20 24040070 */ li $a0, 112
|
||||
/* 0E1B24 80326B24 3C0A8033 */ lui $t2, %hi(D_80334898) # $t2, 0x8033
|
||||
/* 0E1B28 80326B28 8D4A4898 */ lw $t2, %lo(D_80334898)($t2)
|
||||
/* 0E1B2C 80326B2C 2401EFFF */ li $at, -4097
|
||||
/* 0E1B30 80326B30 02018024 */ and $s0, $s0, $at
|
||||
/* 0E1B34 80326B34 8D5B0118 */ lw $k1, 0x118($t2)
|
||||
/* 0E1B38 80326B38 0361D824 */ and $k1, $k1, $at
|
||||
/* 0E1B3C 80326B3C 10000017 */ b .L80326B9C
|
||||
/* 0E1B40 80326B40 AD5B0118 */ sw $k1, 0x118($t2)
|
||||
glabel L80326B44
|
||||
/* 0E1B44 80326B44 2401FDFF */ li $at, -513
|
||||
/* 0E1B48 80326B48 01014024 */ and $t0, $t0, $at
|
||||
/* 0E1B4C 80326B4C 40886800 */ mtc0 $t0, $13
|
||||
/* 0E1B50 80326B50 0C0C9B06 */ jal send_mesg
|
||||
/* 0E1B54 80326B54 24040008 */ li $a0, 8
|
||||
/* 0E1B58 80326B58 2401FDFF */ li $at, -513
|
||||
/* 0E1B5C 80326B5C 1000FF73 */ b .L8032692C
|
||||
/* 0E1B60 80326B60 02018024 */ and $s0, $s0, $at
|
||||
glabel L80326B64
|
||||
/* 0E1B64 80326B64 2401FEFF */ li $at, -257
|
||||
/* 0E1B68 80326B68 01014024 */ and $t0, $t0, $at
|
||||
/* 0E1B6C 80326B6C 40886800 */ mtc0 $t0, $13
|
||||
/* 0E1B70 80326B70 0C0C9B06 */ jal send_mesg
|
||||
/* 0E1B74 80326B74 24040000 */ li $a0, 0
|
||||
/* 0E1B78 80326B78 2401FEFF */ li $at, -257
|
||||
/* 0E1B7C 80326B7C 1000FF6B */ b .L8032692C
|
||||
/* 0E1B80 80326B80 02018024 */ and $s0, $s0, $at
|
||||
.L80326B84:
|
||||
/* 0E1B84 80326B84 24090001 */ li $t1, 1
|
||||
/* 0E1B88 80326B88 A7490012 */ sh $t1, 0x12($k0)
|
||||
/* 0E1B8C 80326B8C 0C0C9B06 */ jal send_mesg
|
||||
/* 0E1B90 80326B90 24040050 */ li $a0, 80
|
||||
/* 0E1B94 80326B94 10000001 */ b .L80326B9C
|
||||
/* 0E1B98 80326B98 00000000 */ nop
|
||||
.L80326B9C:
|
||||
glabel L80326B9C
|
||||
/* 0E1B9C 80326B9C 3C0A8033 */ lui $t2, %hi(D_80334898) # $t2, 0x8033
|
||||
/* 0E1BA0 80326BA0 8D4A4898 */ lw $t2, %lo(D_80334898)($t2)
|
||||
/* 0E1BA4 80326BA4 8F490004 */ lw $t1, 4($k0)
|
||||
/* 0E1BA8 80326BA8 8D4B0004 */ lw $t3, 4($t2)
|
||||
/* 0E1BAC 80326BAC 012B082A */ slt $at, $t1, $t3
|
||||
/* 0E1BB0 80326BB0 10200007 */ beqz $at, .L80326BD0
|
||||
/* 0E1BB4 80326BB4 00000000 */ nop
|
||||
/* 0E1BB8 80326BB8 3C048033 */ lui $a0, %hi(D_80334898) # $a0, 0x8033
|
||||
/* 0E1BBC 80326BBC 03402825 */ move $a1, $k0
|
||||
/* 0E1BC0 80326BC0 0C0C9B64 */ jal __osEnqueueThread
|
||||
/* 0E1BC4 80326BC4 24844898 */ addiu $a0, %lo(D_80334898) # addiu $a0, $a0, 0x4898
|
||||
/* 0E1BC8 80326BC8 080C9B7A */ j __osDispatchThread
|
||||
/* 0E1BCC 80326BCC 00000000 */ nop
|
||||
|
||||
.L80326BD0:
|
||||
/* 0E1BD0 80326BD0 3C098033 */ lui $t1, %hi(D_80334898) # $t1, 0x8033
|
||||
/* 0E1BD4 80326BD4 25294898 */ addiu $t1, %lo(D_80334898) # addiu $t1, $t1, 0x4898
|
||||
/* 0E1BD8 80326BD8 8D2A0000 */ lw $t2, ($t1)
|
||||
/* 0E1BDC 80326BDC AF4A0000 */ sw $t2, ($k0)
|
||||
/* 0E1BE0 80326BE0 080C9B7A */ j __osDispatchThread
|
||||
/* 0E1BE4 80326BE4 AD3A0000 */ sw $k0, ($t1)
|
||||
|
||||
.L80326BE8:
|
||||
glabel L80326BE8
|
||||
/* 0E1BE8 80326BE8 3C018033 */ lui $at, %hi(D_803348A4) # $at, 0x8033
|
||||
/* 0E1BEC 80326BEC AC3A48A4 */ sw $k0, %lo(D_803348A4)($at)
|
||||
/* 0E1BF0 80326BF0 24090001 */ li $t1, 1
|
||||
/* 0E1BF4 80326BF4 A7490010 */ sh $t1, 0x10($k0)
|
||||
/* 0E1BF8 80326BF8 24090002 */ li $t1, 2
|
||||
/* 0E1BFC 80326BFC A7490012 */ sh $t1, 0x12($k0)
|
||||
/* 0E1C00 80326C00 400A4000 */ mfc0 $t2, $8
|
||||
/* 0E1C04 80326C04 AF4A0124 */ sw $t2, 0x124($k0)
|
||||
/* 0E1C08 80326C08 0C0C9B06 */ jal send_mesg
|
||||
/* 0E1C0C 80326C0C 24040060 */ li $a0, 96
|
||||
/* 0E1C10 80326C10 080C9B7A */ j __osDispatchThread
|
||||
/* 0E1C14 80326C14 00000000 */ nop
|
||||
|
||||
glabel send_mesg
|
||||
/* 0E1C18 80326C18 3C0A8036 */ lui $t2, %hi(D_80363830) # $t2, 0x8036
|
||||
/* 0E1C1C 80326C1C 254A3830 */ addiu $t2, %lo(D_80363830) # addiu $t2, $t2, 0x3830
|
||||
/* 0E1C20 80326C20 01445021 */ addu $t2, $t2, $a0
|
||||
/* 0E1C24 80326C24 8D490000 */ lw $t1, ($t2)
|
||||
/* 0E1C28 80326C28 03E09025 */ move $s2, $ra
|
||||
/* 0E1C2C 80326C2C 11200025 */ beqz $t1, .L80326CC4
|
||||
/* 0E1C30 80326C30 00000000 */ nop
|
||||
/* 0E1C34 80326C34 8D2B0008 */ lw $t3, 8($t1)
|
||||
/* 0E1C38 80326C38 8D2C0010 */ lw $t4, 0x10($t1)
|
||||
/* 0E1C3C 80326C3C 016C082A */ slt $at, $t3, $t4
|
||||
/* 0E1C40 80326C40 10200020 */ beqz $at, .L80326CC4
|
||||
/* 0E1C44 80326C44 00000000 */ nop
|
||||
/* 0E1C48 80326C48 8D2D000C */ lw $t5, 0xc($t1)
|
||||
/* 0E1C4C 80326C4C 01AB6821 */ addu $t5, $t5, $t3
|
||||
/* 0E1C50 80326C50 01AC001A */ div $zero, $t5, $t4
|
||||
/* 0E1C54 80326C54 15800002 */ bnez $t4, .L80326C60
|
||||
/* 0E1C58 80326C58 00000000 */ nop
|
||||
/* 0E1C5C 80326C5C 0007000D */ break 7
|
||||
.L80326C60:
|
||||
/* 0E1C60 80326C60 2401FFFF */ li $at, -1
|
||||
/* 0E1C64 80326C64 15810004 */ bne $t4, $at, .L80326C78
|
||||
/* 0E1C68 80326C68 3C018000 */ lui $at, 0x8000
|
||||
/* 0E1C6C 80326C6C 15A10002 */ bne $t5, $at, .L80326C78
|
||||
/* 0E1C70 80326C70 00000000 */ nop
|
||||
/* 0E1C74 80326C74 0006000D */ break 6
|
||||
.L80326C78:
|
||||
/* 0E1C78 80326C78 8D2C0014 */ lw $t4, 0x14($t1)
|
||||
/* 0E1C7C 80326C7C 00006810 */ mfhi $t5
|
||||
/* 0E1C80 80326C80 000D6880 */ sll $t5, $t5, 2
|
||||
/* 0E1C84 80326C84 018D6021 */ addu $t4, $t4, $t5
|
||||
/* 0E1C88 80326C88 8D4D0004 */ lw $t5, 4($t2)
|
||||
/* 0E1C8C 80326C8C 256A0001 */ addiu $t2, $t3, 1
|
||||
/* 0E1C90 80326C90 AD8D0000 */ sw $t5, ($t4)
|
||||
/* 0E1C94 80326C94 AD2A0008 */ sw $t2, 8($t1)
|
||||
/* 0E1C98 80326C98 8D2A0000 */ lw $t2, ($t1)
|
||||
/* 0E1C9C 80326C9C 8D4B0000 */ lw $t3, ($t2)
|
||||
/* 0E1CA0 80326CA0 11600008 */ beqz $t3, .L80326CC4
|
||||
/* 0E1CA4 80326CA4 00000000 */ nop
|
||||
/* 0E1CA8 80326CA8 0C0C9B76 */ jal __osPopThread
|
||||
/* 0E1CAC 80326CAC 01202025 */ move $a0, $t1
|
||||
/* 0E1CB0 80326CB0 00405025 */ move $t2, $v0
|
||||
/* 0E1CB4 80326CB4 3C048033 */ lui $a0, %hi(D_80334898) # $a0, 0x8033
|
||||
/* 0E1CB8 80326CB8 01402825 */ move $a1, $t2
|
||||
/* 0E1CBC 80326CBC 0C0C9B64 */ jal __osEnqueueThread
|
||||
/* 0E1CC0 80326CC0 24844898 */ addiu $a0, %lo(D_80334898) # addiu $a0, $a0, 0x4898
|
||||
.L80326CC4:
|
||||
/* 0E1CC4 80326CC4 02400008 */ jr $s2
|
||||
/* 0E1CC8 80326CC8 00000000 */ nop
|
||||
.L80326CCC:
|
||||
/* 0E1CCC 80326CCC 3C013000 */ lui $at, 0x3000
|
||||
/* 0E1CD0 80326CD0 01014824 */ and $t1, $t0, $at
|
||||
/* 0E1CD4 80326CD4 00094F02 */ srl $t1, $t1, 0x1c
|
||||
/* 0E1CD8 80326CD8 240A0001 */ li $t2, 1
|
||||
/* 0E1CDC 80326CDC 152AFFC2 */ bne $t1, $t2, .L80326BE8
|
||||
/* 0E1CE0 80326CE0 00000000 */ nop
|
||||
/* 0E1CE4 80326CE4 8F5B0118 */ lw $k1, 0x118($k0)
|
||||
/* 0E1CE8 80326CE8 3C012000 */ lui $at, 0x2000
|
||||
/* 0E1CEC 80326CEC 24090001 */ li $t1, 1
|
||||
/* 0E1CF0 80326CF0 0361D825 */ or $k1, $k1, $at
|
||||
/* 0E1CF4 80326CF4 AF490018 */ sw $t1, 0x18($k0)
|
||||
/* 0E1CF8 80326CF8 1000FFB5 */ b .L80326BD0
|
||||
/* 0E1CFC 80326CFC AF5B0118 */ sw $k1, 0x118($k0)
|
||||
|
||||
|
||||
glabel __osEnqueueAndYield
|
||||
/* 0E1D00 80326D00 3C058033 */ lui $a1, %hi(D_803348A0) # $a1, 0x8033
|
||||
/* 0E1D04 80326D04 8CA548A0 */ lw $a1, %lo(D_803348A0)($a1)
|
||||
/* 0E1D08 80326D08 40086000 */ mfc0 $t0, $12
|
||||
/* 0E1D0C 80326D0C 8CBB0018 */ lw $k1, 0x18($a1)
|
||||
/* 0E1D10 80326D10 35080002 */ ori $t0, $t0, 2
|
||||
/* 0E1D14 80326D14 ACA80118 */ sw $t0, 0x118($a1)
|
||||
/* 0E1D18 80326D18 FCB00098 */ sd $s0, 0x98($a1)
|
||||
/* 0E1D1C 80326D1C FCB100A0 */ sd $s1, 0xa0($a1)
|
||||
/* 0E1D20 80326D20 FCB200A8 */ sd $s2, 0xa8($a1)
|
||||
/* 0E1D24 80326D24 FCB300B0 */ sd $s3, 0xb0($a1)
|
||||
/* 0E1D28 80326D28 FCB400B8 */ sd $s4, 0xb8($a1)
|
||||
/* 0E1D2C 80326D2C FCB500C0 */ sd $s5, 0xc0($a1)
|
||||
/* 0E1D30 80326D30 FCB600C8 */ sd $s6, 0xc8($a1)
|
||||
/* 0E1D34 80326D34 FCB700D0 */ sd $s7, 0xd0($a1)
|
||||
/* 0E1D38 80326D38 FCBC00E8 */ sd $gp, 0xe8($a1)
|
||||
/* 0E1D3C 80326D3C FCBD00F0 */ sd $sp, 0xf0($a1)
|
||||
/* 0E1D40 80326D40 FCBE00F8 */ sd $fp, 0xf8($a1)
|
||||
/* 0E1D44 80326D44 FCBF0100 */ sd $ra, 0x100($a1)
|
||||
/* 0E1D48 80326D48 13600009 */ beqz $k1, .L80326D70
|
||||
/* 0E1D4C 80326D4C ACBF011C */ sw $ra, 0x11c($a1)
|
||||
/* 0E1D50 80326D50 445BF800 */ cfc1 $k1, $31
|
||||
/* 0E1D54 80326D54 F4B40180 */ sdc1 $f20, 0x180($a1)
|
||||
/* 0E1D58 80326D58 F4B60188 */ sdc1 $f22, 0x188($a1)
|
||||
/* 0E1D5C 80326D5C F4B80190 */ sdc1 $f24, 0x190($a1)
|
||||
/* 0E1D60 80326D60 F4BA0198 */ sdc1 $f26, 0x198($a1)
|
||||
/* 0E1D64 80326D64 F4BC01A0 */ sdc1 $f28, 0x1a0($a1)
|
||||
/* 0E1D68 80326D68 F4BE01A8 */ sdc1 $f30, 0x1a8($a1)
|
||||
/* 0E1D6C 80326D6C ACBB012C */ sw $k1, 0x12c($a1)
|
||||
.L80326D70:
|
||||
/* 0E1D70 80326D70 3C1BA430 */ lui $k1, %hi(D_A430000C) # $k1, 0xa430
|
||||
/* 0E1D74 80326D74 8F7B000C */ lw $k1, %lo(D_A430000C)($k1)
|
||||
/* 0E1D78 80326D78 10800003 */ beqz $a0, .L80326D88
|
||||
/* 0E1D7C 80326D7C ACBB0128 */ sw $k1, 0x128($a1)
|
||||
/* 0E1D80 80326D80 0C0C9B64 */ jal __osEnqueueThread
|
||||
/* 0E1D84 80326D84 00000000 */ nop
|
||||
.L80326D88:
|
||||
/* 0E1D88 80326D88 080C9B7A */ j __osDispatchThread
|
||||
/* 0E1D8C 80326D8C 00000000 */ nop
|
||||
|
||||
|
||||
#enqueue and pop look like compiled functions? but there's no easy way to extract them
|
||||
glabel __osEnqueueThread
|
||||
/* 0E1D90 80326D90 8C980000 */ lw $t8, ($a0)
|
||||
/* 0E1D94 80326D94 8CAF0004 */ lw $t7, 4($a1)
|
||||
/* 0E1D98 80326D98 0080C825 */ move $t9, $a0
|
||||
/* 0E1D9C 80326D9C 8F0E0004 */ lw $t6, 4($t8)
|
||||
/* 0E1DA0 80326DA0 01CF082A */ slt $at, $t6, $t7
|
||||
/* 0E1DA4 80326DA4 14200007 */ bnez $at, .L80326DC4
|
||||
/* 0E1DA8 80326DA8 00000000 */ nop
|
||||
.L80326DAC:
|
||||
/* 0E1DAC 80326DAC 0300C825 */ move $t9, $t8
|
||||
/* 0E1DB0 80326DB0 8F180000 */ lw $t8, ($t8)
|
||||
/* 0E1DB4 80326DB4 8F0E0004 */ lw $t6, 4($t8)
|
||||
/* 0E1DB8 80326DB8 01CF082A */ slt $at, $t6, $t7
|
||||
/* 0E1DBC 80326DBC 1020FFFB */ beqz $at, .L80326DAC
|
||||
/* 0E1DC0 80326DC0 00000000 */ nop
|
||||
.L80326DC4:
|
||||
/* 0E1DC4 80326DC4 8F380000 */ lw $t8, ($t9)
|
||||
/* 0E1DC8 80326DC8 ACB80000 */ sw $t8, ($a1)
|
||||
/* 0E1DCC 80326DCC AF250000 */ sw $a1, ($t9)
|
||||
/* 0E1DD0 80326DD0 03E00008 */ jr $ra
|
||||
/* 0E1DD4 80326DD4 ACA40008 */ sw $a0, 8($a1)
|
||||
|
||||
glabel __osPopThread
|
||||
/* 0E1DD8 80326DD8 8C820000 */ lw $v0, ($a0)
|
||||
/* 0E1DDC 80326DDC 8C590000 */ lw $t9, ($v0)
|
||||
/* 0E1DE0 80326DE0 03E00008 */ jr $ra
|
||||
/* 0E1DE4 80326DE4 AC990000 */ sw $t9, ($a0)
|
||||
|
||||
glabel __osDispatchThread
|
||||
/* 0E1DE8 80326DE8 3C048033 */ lui $a0, %hi(D_80334898) # $a0, 0x8033
|
||||
/* 0E1DEC 80326DEC 0C0C9B76 */ jal __osPopThread
|
||||
/* 0E1DF0 80326DF0 24844898 */ addiu $a0, %lo(D_80334898) # addiu $a0, $a0, 0x4898
|
||||
/* 0E1DF4 80326DF4 3C018033 */ lui $at, %hi(D_803348A0) # $at, 0x8033
|
||||
/* 0E1DF8 80326DF8 AC2248A0 */ sw $v0, %lo(D_803348A0)($at)
|
||||
/* 0E1DFC 80326DFC 24080004 */ li $t0, 4
|
||||
/* 0E1E00 80326E00 A4480010 */ sh $t0, 0x10($v0)
|
||||
/* 0E1E04 80326E04 0040D025 */ move $k0, $v0
|
||||
.L80326E08:
|
||||
/* 0E1E08 80326E08 DF5B0108 */ ld $k1, 0x108($k0)
|
||||
/* 0E1E0C 80326E0C DF410020 */ ld $at, 0x20($k0)
|
||||
/* 0E1E10 80326E10 DF420028 */ ld $v0, 0x28($k0)
|
||||
/* 0E1E14 80326E14 03600013 */ mtlo $k1
|
||||
/* 0E1E18 80326E18 DF5B0110 */ ld $k1, 0x110($k0)
|
||||
/* 0E1E1C 80326E1C DF430030 */ ld $v1, 0x30($k0)
|
||||
/* 0E1E20 80326E20 DF440038 */ ld $a0, 0x38($k0)
|
||||
/* 0E1E24 80326E24 DF450040 */ ld $a1, 0x40($k0)
|
||||
/* 0E1E28 80326E28 DF460048 */ ld $a2, 0x48($k0)
|
||||
/* 0E1E2C 80326E2C DF470050 */ ld $a3, 0x50($k0)
|
||||
/* 0E1E30 80326E30 DF480058 */ ld $t0, 0x58($k0)
|
||||
/* 0E1E34 80326E34 DF490060 */ ld $t1, 0x60($k0)
|
||||
/* 0E1E38 80326E38 DF4A0068 */ ld $t2, 0x68($k0)
|
||||
/* 0E1E3C 80326E3C DF4B0070 */ ld $t3, 0x70($k0)
|
||||
/* 0E1E40 80326E40 DF4C0078 */ ld $t4, 0x78($k0)
|
||||
/* 0E1E44 80326E44 DF4D0080 */ ld $t5, 0x80($k0)
|
||||
/* 0E1E48 80326E48 DF4E0088 */ ld $t6, 0x88($k0)
|
||||
/* 0E1E4C 80326E4C DF4F0090 */ ld $t7, 0x90($k0)
|
||||
/* 0E1E50 80326E50 DF500098 */ ld $s0, 0x98($k0)
|
||||
/* 0E1E54 80326E54 DF5100A0 */ ld $s1, 0xa0($k0)
|
||||
/* 0E1E58 80326E58 DF5200A8 */ ld $s2, 0xa8($k0)
|
||||
/* 0E1E5C 80326E5C DF5300B0 */ ld $s3, 0xb0($k0)
|
||||
/* 0E1E60 80326E60 DF5400B8 */ ld $s4, 0xb8($k0)
|
||||
/* 0E1E64 80326E64 DF5500C0 */ ld $s5, 0xc0($k0)
|
||||
/* 0E1E68 80326E68 DF5600C8 */ ld $s6, 0xc8($k0)
|
||||
/* 0E1E6C 80326E6C DF5700D0 */ ld $s7, 0xd0($k0)
|
||||
/* 0E1E70 80326E70 DF5800D8 */ ld $t8, 0xd8($k0)
|
||||
/* 0E1E74 80326E74 DF5900E0 */ ld $t9, 0xe0($k0)
|
||||
/* 0E1E78 80326E78 DF5C00E8 */ ld $gp, 0xe8($k0)
|
||||
/* 0E1E7C 80326E7C 03600011 */ mthi $k1
|
||||
/* 0E1E80 80326E80 DF5D00F0 */ ld $sp, 0xf0($k0)
|
||||
/* 0E1E84 80326E84 DF5E00F8 */ ld $fp, 0xf8($k0)
|
||||
/* 0E1E88 80326E88 DF5F0100 */ ld $ra, 0x100($k0)
|
||||
/* 0E1E8C 80326E8C 8F5B011C */ lw $k1, 0x11c($k0)
|
||||
/* 0E1E90 80326E90 409B7000 */ mtc0 $k1, $14
|
||||
/* 0E1E94 80326E94 8F5B0118 */ lw $k1, 0x118($k0)
|
||||
/* 0E1E98 80326E98 409B6000 */ mtc0 $k1, $12
|
||||
/* 0E1E9C 80326E9C 8F5B0018 */ lw $k1, 0x18($k0)
|
||||
/* 0E1EA0 80326EA0 13600013 */ beqz $k1, .L80326EF0
|
||||
/* 0E1EA4 80326EA4 00000000 */ nop
|
||||
/* 0E1EA8 80326EA8 8F5B012C */ lw $k1, 0x12c($k0)
|
||||
/* 0E1EAC 80326EAC 44DBF800 */ ctc1 $k1, $31
|
||||
/* 0E1EB0 80326EB0 D7400130 */ ldc1 $f0, 0x130($k0)
|
||||
/* 0E1EB4 80326EB4 D7420138 */ ldc1 $f2, 0x138($k0)
|
||||
/* 0E1EB8 80326EB8 D7440140 */ ldc1 $f4, 0x140($k0)
|
||||
/* 0E1EBC 80326EBC D7460148 */ ldc1 $f6, 0x148($k0)
|
||||
/* 0E1EC0 80326EC0 D7480150 */ ldc1 $f8, 0x150($k0)
|
||||
/* 0E1EC4 80326EC4 D74A0158 */ ldc1 $f10, 0x158($k0)
|
||||
/* 0E1EC8 80326EC8 D74C0160 */ ldc1 $f12, 0x160($k0)
|
||||
/* 0E1ECC 80326ECC D74E0168 */ ldc1 $f14, 0x168($k0)
|
||||
/* 0E1ED0 80326ED0 D7500170 */ ldc1 $f16, 0x170($k0)
|
||||
/* 0E1ED4 80326ED4 D7520178 */ ldc1 $f18, 0x178($k0)
|
||||
/* 0E1ED8 80326ED8 D7540180 */ ldc1 $f20, 0x180($k0)
|
||||
/* 0E1EDC 80326EDC D7560188 */ ldc1 $f22, 0x188($k0)
|
||||
/* 0E1EE0 80326EE0 D7580190 */ ldc1 $f24, 0x190($k0)
|
||||
/* 0E1EE4 80326EE4 D75A0198 */ ldc1 $f26, 0x198($k0)
|
||||
/* 0E1EE8 80326EE8 D75C01A0 */ ldc1 $f28, 0x1a0($k0)
|
||||
/* 0E1EEC 80326EEC D75E01A8 */ ldc1 $f30, 0x1a8($k0)
|
||||
.L80326EF0:
|
||||
/* 0E1EF0 80326EF0 8F5B0128 */ lw $k1, 0x128($k0)
|
||||
/* 0E1EF4 80326EF4 001BD840 */ sll $k1, $k1, 1
|
||||
/* 0E1EF8 80326EF8 3C1A8034 */ lui $k0, %hi(D_803386D0) # $k0, 0x8034
|
||||
/* 0E1EFC 80326EFC 275A86D0 */ addiu $k0, %lo(D_803386D0) # addiu $k0, $k0, -0x7930
|
||||
/* 0E1F00 80326F00 037AD821 */ addu $k1, $k1, $k0
|
||||
/* 0E1F04 80326F04 977B0000 */ lhu $k1, ($k1)
|
||||
/* 0E1F08 80326F08 3C1AA430 */ lui $k0, %hi(D_A430000C) # $k0, 0xa430
|
||||
/* 0E1F0C 80326F0C 275A000C */ addiu $k0, %lo(D_A430000C) # addiu $k0, $k0, 0xc
|
||||
/* 0E1F10 80326F10 AF5B0000 */ sw $k1, ($k0)
|
||||
/* 0E1F14 80326F14 00000000 */ nop
|
||||
/* 0E1F18 80326F18 00000000 */ nop
|
||||
/* 0E1F1C 80326F1C 00000000 */ nop
|
||||
/* 0E1F20 80326F20 00000000 */ nop
|
||||
/* 0E1F24 80326F24 42000018 */ eret
|
||||
glabel __osCleanupThread
|
||||
/* 0E1F28 80326F28 0C0CA7CC */ jal osDestroyThread
|
||||
/* 0E1F2C 80326F2C 00002025 */ move $a0, $zero
|
||||
|
||||
.section .data
|
||||
|
||||
glabel D_80334920
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
||||
|
||||
glabel D_80334934
|
||||
.word 0
|
||||
|
||||
glabel D_80334938
|
||||
.word 0
|
||||
.word 0
|
||||
|
||||
|
||||
|
||||
.section .rodata
|
||||
|
||||
glabel D_80338610
|
||||
#.incbin "bin/rodata.bin", 0x3BA0, 0x20
|
||||
.byte 0x00,0x14,0x18,0x18,0x1C,0x1C,0x1C,0x1C,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x04,0x08,0x08,0x0C,0x0C,0x0C,0x0C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10
|
||||
|
||||
glabel jtbl_80338630
|
||||
.word L80326B9C
|
||||
.word L80326B64
|
||||
.word L80326B44
|
||||
.word L803269B8
|
||||
.word L80326984
|
||||
.word L80326AE8
|
||||
.word L80326BE8
|
||||
.word L80326BE8
|
||||
.word L80326964
|
||||
.word 0
|
||||
.word 0
|
||||
.word 0
|
|
@ -1,17 +0,0 @@
|
|||
|
||||
.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 __osGetCause
|
||||
mfc0 $v0, $13
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
nop
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
|
||||
#s32 __osGetFpcCsr(void)
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
glabel __osGetFpcCsr
|
||||
/* 00E010 7000D410 4442F800 */ cfc1 $v0, $31
|
||||
/* 00E014 7000D414 03E00008 */ jr $ra
|
||||
/* 00E018 7000D418 00000000 */ nop
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
|
||||
.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 __osGetSR
|
||||
mfc0 $v0, $12
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
nop
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
|
||||
#u32 __osGetTLBHi(s32 index)
|
||||
|
||||
.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
|
|
@ -1,65 +0,0 @@
|
|||
|
||||
.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 __osProbeTLB
|
||||
mfc0 $t0, $10
|
||||
andi $t1, $t0, 0xff
|
||||
li $at, -8192
|
||||
and $t2, $a0, $at
|
||||
or $t1, $t1, $t2
|
||||
mtc0 $t1, $10
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
tlbp
|
||||
nop
|
||||
nop
|
||||
mfc0 $t3, $0
|
||||
lui $at, 0x8000
|
||||
and $t3, $t3, $at
|
||||
bnez $t3, .L8032A0D8
|
||||
nop
|
||||
tlbr
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
mfc0 $t3, $5
|
||||
addi $t3, $t3, 0x2000
|
||||
srl $t3, $t3, 1
|
||||
and $t4, $t3, $a0
|
||||
bnez $t4, .L8032A0A8
|
||||
addi $t3, $t3, -1
|
||||
mfc0 $v0, $2
|
||||
b .L8032A0AC
|
||||
nop
|
||||
.L8032A0A8:
|
||||
mfc0 $v0, $3
|
||||
.L8032A0AC:
|
||||
andi $t5, $v0, 2
|
||||
beqz $t5, .L8032A0D8
|
||||
nop
|
||||
lui $at, (0x3FFFFFC0 >> 16) # lui $at, 0x3fff
|
||||
ori $at, (0x3FFFFFC0 & 0xFFFF) # ori $at, $at, 0xffc0
|
||||
and $v0, $v0, $at
|
||||
sll $v0, $v0, 6
|
||||
and $t5, $a0, $t3
|
||||
add $v0, $v0, $t5
|
||||
b .L8032A0DC
|
||||
nop
|
||||
.L8032A0D8:
|
||||
li $v0, -1
|
||||
.L8032A0DC:
|
||||
mtc0 $t0, $10
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
nop
|
||||
nop
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
glabel __osRestoreInt
|
||||
mfc0 $t0, $12
|
||||
or $t0, $t0, $a0
|
||||
mtc0 $t0, $12
|
||||
nop
|
||||
nop
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
nop
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
|
||||
.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 __osSetCompare
|
||||
mtc0 $a0, $11
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
nop
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
|
||||
.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
|
||||
cfc1 $v0, $31
|
||||
ctc1 $a0, $31
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
|
||||
.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 __osSetSR
|
||||
mtc0 $a0, $12
|
||||
nop
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
|
|
@ -1,233 +0,0 @@
|
|||
|
||||
.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
|
||||
beqz $a2, .L80323A4C
|
||||
move $a3, $a1
|
||||
beq $a0, $a1, .L80323A4C
|
||||
slt $at, $a1, $a0
|
||||
bnezl $at, .L80323A14
|
||||
slti $at, $a2, 0x10
|
||||
add $v0, $a0, $a2
|
||||
slt $at, $a1, $v0
|
||||
beql $at, $zero, .L80323A14
|
||||
slti $at, $a2, 0x10
|
||||
b .L80323B78
|
||||
slti $at, $a2, 0x10
|
||||
slti $at, $a2, 0x10
|
||||
.L80323A14:
|
||||
bnez $at, .L80323A2C
|
||||
nop
|
||||
andi $v0, $a0, 3
|
||||
andi $v1, $a1, 3
|
||||
beq $v0, $v1, .L80323A54
|
||||
nop
|
||||
.L80323A2C:
|
||||
beqz $a2, .L80323A4C
|
||||
nop
|
||||
addu $v1, $a0, $a2
|
||||
.L80323A38:
|
||||
lb $v0, ($a0)
|
||||
addiu $a0, $a0, 1
|
||||
addiu $a1, $a1, 1
|
||||
bne $a0, $v1, .L80323A38
|
||||
sb $v0, -1($a1)
|
||||
.L80323A4C:
|
||||
jr $ra
|
||||
move $v0, $a3
|
||||
|
||||
.L80323A54:
|
||||
beqz $v0, .L80323AB8
|
||||
li $at, 1
|
||||
beq $v0, $at, .L80323A9C
|
||||
li $at, 2
|
||||
beql $v0, $at, .L80323A88
|
||||
lh $v0, ($a0)
|
||||
lb $v0, ($a0)
|
||||
addiu $a0, $a0, 1
|
||||
addiu $a1, $a1, 1
|
||||
addiu $a2, $a2, -1
|
||||
b .L80323AB8
|
||||
sb $v0, -1($a1)
|
||||
lh $v0, ($a0)
|
||||
.L80323A88:
|
||||
addiu $a0, $a0, 2
|
||||
addiu $a1, $a1, 2
|
||||
addiu $a2, $a2, -2
|
||||
b .L80323AB8
|
||||
sh $v0, -2($a1)
|
||||
.L80323A9C:
|
||||
lb $v0, ($a0)
|
||||
lh $v1, 1($a0)
|
||||
addiu $a0, $a0, 3
|
||||
addiu $a1, $a1, 3
|
||||
addiu $a2, $a2, -3
|
||||
sb $v0, -3($a1)
|
||||
sh $v1, -2($a1)
|
||||
.L80323AB8:
|
||||
slti $at, $a2, 0x20
|
||||
bnezl $at, .L80323B18
|
||||
slti $at, $a2, 0x10
|
||||
lw $v0, ($a0)
|
||||
lw $v1, 4($a0)
|
||||
lw $t0, 8($a0)
|
||||
lw $t1, 0xc($a0)
|
||||
lw $t2, 0x10($a0)
|
||||
lw $t3, 0x14($a0)
|
||||
lw $t4, 0x18($a0)
|
||||
lw $t5, 0x1c($a0)
|
||||
addiu $a0, $a0, 0x20
|
||||
addiu $a1, $a1, 0x20
|
||||
addiu $a2, $a2, -0x20
|
||||
sw $v0, -0x20($a1)
|
||||
sw $v1, -0x1c($a1)
|
||||
sw $t0, -0x18($a1)
|
||||
sw $t1, -0x14($a1)
|
||||
sw $t2, -0x10($a1)
|
||||
sw $t3, -0xc($a1)
|
||||
sw $t4, -8($a1)
|
||||
b .L80323AB8
|
||||
sw $t5, -4($a1)
|
||||
.L80323B14:
|
||||
slti $at, $a2, 0x10
|
||||
.L80323B18:
|
||||
bnezl $at, .L80323B54
|
||||
slti $at, $a2, 4
|
||||
lw $v0, ($a0)
|
||||
lw $v1, 4($a0)
|
||||
lw $t0, 8($a0)
|
||||
lw $t1, 0xc($a0)
|
||||
addiu $a0, $a0, 0x10
|
||||
addiu $a1, $a1, 0x10
|
||||
addiu $a2, $a2, -0x10
|
||||
sw $v0, -0x10($a1)
|
||||
sw $v1, -0xc($a1)
|
||||
sw $t0, -8($a1)
|
||||
b .L80323B14
|
||||
sw $t1, -4($a1)
|
||||
.L80323B50:
|
||||
slti $at, $a2, 4
|
||||
.L80323B54:
|
||||
bnez $at, .L80323A2C
|
||||
nop
|
||||
lw $v0, ($a0)
|
||||
addiu $a0, $a0, 4
|
||||
addiu $a1, $a1, 4
|
||||
addiu $a2, $a2, -4
|
||||
b .L80323B50
|
||||
sw $v0, -4($a1)
|
||||
slti $at, $a2, 0x10
|
||||
.L80323B78:
|
||||
add $a0, $a0, $a2
|
||||
bnez $at, .L80323B94
|
||||
add $a1, $a1, $a2
|
||||
andi $v0, $a0, 3
|
||||
andi $v1, $a1, 3
|
||||
beq $v0, $v1, .L80323BC4
|
||||
nop
|
||||
.L80323B94:
|
||||
beqz $a2, .L80323A4C
|
||||
nop
|
||||
addiu $a0, $a0, -1
|
||||
addiu $a1, $a1, -1
|
||||
subu $v1, $a0, $a2
|
||||
.L80323BA8:
|
||||
lb $v0, ($a0)
|
||||
addiu $a0, $a0, -1
|
||||
addiu $a1, $a1, -1
|
||||
bne $a0, $v1, .L80323BA8
|
||||
sb $v0, 1($a1)
|
||||
jr $ra
|
||||
move $v0, $a3
|
||||
|
||||
.L80323BC4:
|
||||
beqz $v0, .L80323C28
|
||||
li $at, 3
|
||||
beq $v0, $at, .L80323C0C
|
||||
li $at, 2
|
||||
beql $v0, $at, .L80323BF8
|
||||
lh $v0, -2($a0)
|
||||
lb $v0, -1($a0)
|
||||
addiu $a0, $a0, -1
|
||||
addiu $a1, $a1, -1
|
||||
addiu $a2, $a2, -1
|
||||
b .L80323C28
|
||||
sb $v0, ($a1)
|
||||
lh $v0, -2($a0)
|
||||
.L80323BF8:
|
||||
addiu $a0, $a0, -2
|
||||
addiu $a1, $a1, -2
|
||||
addiu $a2, $a2, -2
|
||||
b .L80323C28
|
||||
sh $v0, ($a1)
|
||||
.L80323C0C:
|
||||
lb $v0, -1($a0)
|
||||
lh $v1, -3($a0)
|
||||
addiu $a0, $a0, -3
|
||||
addiu $a1, $a1, -3
|
||||
addiu $a2, $a2, -3
|
||||
sb $v0, 2($a1)
|
||||
sh $v1, ($a1)
|
||||
.L80323C28:
|
||||
slti $at, $a2, 0x20
|
||||
bnezl $at, .L80323C88
|
||||
slti $at, $a2, 0x10
|
||||
lw $v0, -4($a0)
|
||||
lw $v1, -8($a0)
|
||||
lw $t0, -0xc($a0)
|
||||
lw $t1, -0x10($a0)
|
||||
lw $t2, -0x14($a0)
|
||||
lw $t3, -0x18($a0)
|
||||
lw $t4, -0x1c($a0)
|
||||
lw $t5, -0x20($a0)
|
||||
addiu $a0, $a0, -0x20
|
||||
addiu $a1, $a1, -0x20
|
||||
addiu $a2, $a2, -0x20
|
||||
sw $v0, 0x1c($a1)
|
||||
sw $v1, 0x18($a1)
|
||||
sw $t0, 0x14($a1)
|
||||
sw $t1, 0x10($a1)
|
||||
sw $t2, 0xc($a1)
|
||||
sw $t3, 8($a1)
|
||||
sw $t4, 4($a1)
|
||||
b .L80323C28
|
||||
sw $t5, ($a1)
|
||||
.L80323C84:
|
||||
slti $at, $a2, 0x10
|
||||
.L80323C88:
|
||||
bnezl $at, .L80323CC4
|
||||
slti $at, $a2, 4
|
||||
lw $v0, -4($a0)
|
||||
lw $v1, -8($a0)
|
||||
lw $t0, -0xc($a0)
|
||||
lw $t1, -0x10($a0)
|
||||
addiu $a0, $a0, -0x10
|
||||
addiu $a1, $a1, -0x10
|
||||
addiu $a2, $a2, -0x10
|
||||
sw $v0, 0xc($a1)
|
||||
sw $v1, 8($a1)
|
||||
sw $t0, 4($a1)
|
||||
b .L80323C84
|
||||
sw $t1, ($a1)
|
||||
.L80323CC0:
|
||||
slti $at, $a2, 4
|
||||
.L80323CC4:
|
||||
bnez $at, .L80323B94
|
||||
nop
|
||||
lw $v0, -4($a0)
|
||||
addiu $a0, $a0, -4
|
||||
addiu $a1, $a1, -4
|
||||
addiu $a2, $a2, -4
|
||||
b .L80323CC0
|
||||
sw $v0, ($a1)
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
|
||||
#.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
|
||||
#this file is probably handwritten
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
glabel bzero
|
||||
blt $a1, 0xc, .L803236BC
|
||||
negu $v1, $a0
|
||||
andi $v1, $v1, 3
|
||||
beqz $v1, .L80323660
|
||||
subu $a1, $a1, $v1
|
||||
swl $zero, ($a0)
|
||||
addu $a0, $a0, $v1
|
||||
.L80323660:
|
||||
and $a3, $a1, -32
|
||||
beqz $a3, .L8032369C
|
||||
subu $a1, $a1, $a3
|
||||
addu $a3, $a3, $a0
|
||||
.L80323674:
|
||||
addiu $a0, $a0, 0x20
|
||||
sw $zero, -0x20($a0)
|
||||
sw $zero, -0x1c($a0)
|
||||
sw $zero, -0x18($a0)
|
||||
sw $zero, -0x14($a0)
|
||||
sw $zero, -0x10($a0)
|
||||
sw $zero, -0xc($a0)
|
||||
sw $zero, -8($a0)
|
||||
bne $a0, $a3, .L80323674
|
||||
sw $zero, -4($a0)
|
||||
.L8032369C:
|
||||
and $a3, $a1, -4
|
||||
beqz $a3, .L803236BC
|
||||
subu $a1, $a1, $a3
|
||||
addu $a3, $a3, $a0
|
||||
.L803236B0:
|
||||
addiu $a0, $a0, 4
|
||||
bne $a0, $a3, .L803236B0
|
||||
sw $zero, -4($a0)
|
||||
.L803236BC:
|
||||
blez $a1, .L803236D4
|
||||
nop
|
||||
addu $a1, $a1, $a0
|
||||
.L803236C8:
|
||||
addiu $a0, $a0, 1
|
||||
bne $a0, $a1, .L803236C8
|
||||
sb $zero, -1($a0)
|
||||
.L803236D4:
|
||||
jr $ra
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
glabel osGetCount
|
||||
mfc0 $v0, $9
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
nop
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
|
||||
.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
|
||||
blez $a1, .L80323500
|
||||
nop
|
||||
li $t3, 8192
|
||||
sltu $at, $a1, $t3
|
||||
beqz $at, .L80323508
|
||||
nop
|
||||
move $t0, $a0
|
||||
addu $t1, $a0, $a1
|
||||
sltu $at, $t0, $t1
|
||||
beqz $at, .L80323500
|
||||
nop
|
||||
andi $t2, $t0, 0xf
|
||||
beqz $t2, .L803234D0
|
||||
addiu $t1, $t1, -0x10
|
||||
subu $t0, $t0, $t2
|
||||
cache 0x15, ($t0)
|
||||
sltu $at, $t0, $t1
|
||||
beqz $at, .L80323500
|
||||
nop
|
||||
addiu $t0, $t0, 0x10
|
||||
.L803234D0:
|
||||
andi $t2, $t1, 0xf
|
||||
beqz $t2, .L803234F0
|
||||
nop
|
||||
subu $t1, $t1, $t2
|
||||
cache 0x15, 0x10($t1)
|
||||
sltu $at, $t1, $t0
|
||||
bnez $at, .L80323500
|
||||
nop
|
||||
.L803234F0:
|
||||
cache 0x11, ($t0)
|
||||
sltu $at, $t0, $t1
|
||||
bnez $at, .L803234F0
|
||||
addiu $t0, $t0, 0x10
|
||||
.L80323500:
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
.L80323508:
|
||||
lui $t0, %hi(D_80000010)
|
||||
addu $t1, $t0, $t3
|
||||
addiu $t1, $t1, -0x10
|
||||
.L80323514:
|
||||
cache 1, ($t0)
|
||||
sltu $at, $t0, $t1
|
||||
bnez $at, .L80323514
|
||||
addiu $t0, %lo(D_80000010) # addiu $t0, $t0, 0x10
|
||||
jr $ra
|
|
@ -1,45 +0,0 @@
|
|||
|
||||
.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
|
||||
blez $a1, .L80323728
|
||||
nop
|
||||
li $t3, 16384
|
||||
sltu $at, $a1, $t3
|
||||
beqz $at, .L80323730
|
||||
nop
|
||||
move $t0, $a0
|
||||
addu $t1, $a0, $a1
|
||||
sltu $at, $t0, $t1
|
||||
beqz $at, .L80323728
|
||||
nop
|
||||
andi $t2, $t0, 0x1f
|
||||
addiu $t1, $t1, -0x20
|
||||
subu $t0, $t0, $t2
|
||||
.L80323718:
|
||||
cache 0x10, ($t0)
|
||||
sltu $at, $t0, $t1
|
||||
bnez $at, .L80323718
|
||||
addiu $t0, $t0, 0x20
|
||||
.L80323728:
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
.L80323730:
|
||||
lui $t0, %hi(D_80000020)
|
||||
addu $t1, $t0, $t3
|
||||
addiu $t1, $t1, -0x20
|
||||
.L8032373C:
|
||||
cache 0, ($t0)
|
||||
sltu $at, $t0, $t1
|
||||
bnez $at, .L8032373C
|
||||
addiu $t0, %lo(D_80000020) # addiu $t0, $t0, 0x20
|
||||
jr $ra
|
||||
nop
|
|
@ -1,64 +0,0 @@
|
|||
.set noreorder # don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
# This file is handwritten
|
||||
|
||||
#void osMapTLB(s32 index, OSPageMask pm, void *vaddr, u32 evenpaddr,
|
||||
# u32 oddpaddr, s32 asid);
|
||||
glabel osMapTLB
|
||||
mfc0 $t0, $10
|
||||
mtc0 $a0, $0
|
||||
mtc0 $a1, $5
|
||||
lw $t1, 0x14($sp) #asid
|
||||
beq $t1, -1, .L803214D8
|
||||
li $t4, 1
|
||||
li $t2, 30
|
||||
b .L803214DC
|
||||
or $a2, $a2, $t1 #vaddr
|
||||
.L803214D8:
|
||||
li $t2, 31
|
||||
.L803214DC:
|
||||
mtc0 $a2, $10 #vaddr
|
||||
beq $a3, -1, .L80321500 #even paddr
|
||||
nop
|
||||
srl $t3, $a3, 6 #evenpaddr
|
||||
or $t3, $t3, $t2
|
||||
mtc0 $t3, $2
|
||||
b .L80321504
|
||||
nop
|
||||
.L80321500:
|
||||
mtc0 $t4, $2
|
||||
.L80321504:
|
||||
lw $t3, 0x10($sp) #oddpaddr
|
||||
beq $t3, -1, .L80321528
|
||||
nop
|
||||
srl $t3, $t3, 6
|
||||
or $t3, $t3, $t2
|
||||
mtc0 $t3, $3
|
||||
b .L80321540
|
||||
nop
|
||||
.L80321528:
|
||||
mtc0 $t4, $3
|
||||
bne $a3, -1, .L80321540 #evenpaddr
|
||||
nop
|
||||
lui $t3, 0x8000
|
||||
mtc0 $t3, $10
|
||||
.L80321540:
|
||||
nop
|
||||
tlbwi
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
mtc0 $t0, $10
|
||||
jr $ra
|
||||
nop #file gets padded but
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
|
||||
.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 osMapTLBRdb
|
||||
mfc0 $t0, $10
|
||||
li $t1, 31
|
||||
mtc0 $t1, $0
|
||||
mtc0 $zero, $5
|
||||
li $t2, 23
|
||||
lui $t1, 0xc000
|
||||
mtc0 $t1, $10
|
||||
lui $t1, 0x8000
|
||||
srl $t3, $t1, 6
|
||||
or $t3, $t3, $t2
|
||||
mtc0 $t3, $2
|
||||
li $t1, 1
|
||||
mtc0 $t1, $3
|
||||
nop
|
||||
tlbwi
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
mtc0 $t0, $10
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
nop
|
||||
nop
|
||||
|
|
@ -1,105 +0,0 @@
|
|||
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
|
||||
.eqv MI_INTR_MASK_REG, 0xA430000C
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
glabel osSetIntMask
|
||||
mfc0 $t1, $12
|
||||
andi $v0, $t1, 0xff01
|
||||
lui $t2, %hi(MI_INTR_MASK_REG) # $t2, 0xa430
|
||||
lw $t2, %lo(MI_INTR_MASK_REG)($t2)
|
||||
sll $t2, $t2, 0x10
|
||||
or $v0, $v0, $t2
|
||||
lui $at, 0x3f
|
||||
and $t0, $a0, $at
|
||||
srl $t0, $t0, 0xf
|
||||
lui $t2, %hi(D_803386D0)
|
||||
addu $t2, $t2, $t0
|
||||
lhu $t2, %lo(D_803386D0)($t2)
|
||||
lui $at, %hi(MI_INTR_MASK_REG) # $at, 0xa430
|
||||
sw $t2, %lo(MI_INTR_MASK_REG)($at)
|
||||
andi $t0, $a0, 0xff01
|
||||
lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff
|
||||
ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff
|
||||
and $t1, $t1, $at
|
||||
or $t1, $t1, $t0
|
||||
mtc0 $t1, $12
|
||||
nop
|
||||
nop
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
|
||||
.section .rodata
|
||||
|
||||
glabel D_803386D0
|
||||
.half 0x0555
|
||||
.half 0x0556
|
||||
.half 0x0559
|
||||
.half 0x055A
|
||||
.half 0x0565
|
||||
.half 0x0566
|
||||
.half 0x0569
|
||||
.half 0x056A
|
||||
.half 0x0595
|
||||
.half 0x0596
|
||||
.half 0x0599
|
||||
.half 0x059A
|
||||
.half 0x05A5
|
||||
.half 0x05A6
|
||||
.half 0x05A9
|
||||
.half 0x05AA
|
||||
.half 0x0655
|
||||
.half 0x0656
|
||||
.half 0x0659
|
||||
.half 0x065A
|
||||
.half 0x0665
|
||||
.half 0x0666
|
||||
.half 0x0669
|
||||
.half 0x066A
|
||||
.half 0x0695
|
||||
.half 0x0696
|
||||
.half 0x0699
|
||||
.half 0x069A
|
||||
.half 0x06A5
|
||||
.half 0x06A6
|
||||
.half 0x06A9
|
||||
.half 0x06AA
|
||||
.half 0x0955
|
||||
.half 0x0956
|
||||
.half 0x0959
|
||||
.half 0x095A
|
||||
.half 0x0965
|
||||
.half 0x0966
|
||||
.half 0x0969
|
||||
.half 0x096A
|
||||
.half 0x0995
|
||||
.half 0x0996
|
||||
.half 0x0999
|
||||
.half 0x099A
|
||||
.half 0x09A5
|
||||
.half 0x09A6
|
||||
.half 0x09A9
|
||||
.half 0x09AA
|
||||
.half 0x0A55
|
||||
.half 0x0A56
|
||||
.half 0x0A59
|
||||
.half 0x0A5A
|
||||
.half 0x0A65
|
||||
.half 0x0A66
|
||||
.half 0x0A69
|
||||
.half 0x0A6A
|
||||
.half 0x0A95
|
||||
.half 0x0A96
|
||||
.half 0x0A99
|
||||
.half 0x0A9A
|
||||
.half 0x0AA5
|
||||
.half 0x0AA6
|
||||
.half 0x0AA9
|
||||
.half 0x0AAA
|
|
@ -1,26 +0,0 @@
|
|||
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
|
||||
#void osUnmapTLB(int index)
|
||||
.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
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
.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 osUnmapTLBAll
|
||||
mfc0 $t0, $10
|
||||
li $t1, 31
|
||||
lui $t2, 0x8000
|
||||
mtc0 $t2, $10
|
||||
mtc0 $zero, $2
|
||||
mtc0 $zero, $3
|
||||
.L80321588:
|
||||
mtc0 $t1, $0
|
||||
nop
|
||||
tlbwi
|
||||
nop
|
||||
nop
|
||||
addi $t1, $t1, -1
|
||||
bnezl $t1, .L80321588 #bnezl, bnez but with likely hint
|
||||
nop
|
||||
mtc0 $t0, $10
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
glabel osWritebackDCache
|
||||
blez $a1, .osWritebackDCacheReturn
|
||||
nop
|
||||
li $t3, 8192
|
||||
bgeu $a1, $t3, .L80324E40
|
||||
nop
|
||||
move $t0, $a0
|
||||
addu $t1, $a0, $a1
|
||||
bgeu $t0, $t1, .osWritebackDCacheReturn
|
||||
nop
|
||||
andi $t2, $t0, 0xf
|
||||
addiu $t1, $t1, -0x10
|
||||
subu $t0, $t0, $t2
|
||||
.L80324E28:
|
||||
cache 0x19, ($t0)
|
||||
bltu $t0, $t1, .L80324E28
|
||||
addiu $t0, $t0, 0x10
|
||||
.osWritebackDCacheReturn:
|
||||
jr $ra
|
||||
nop
|
||||
|
||||
.L80324E40:
|
||||
lui $t0, 0x8000
|
||||
addu $t1, $t0, $t3
|
||||
addiu $t1, $t1, -0x10
|
||||
.L80324E4C:
|
||||
cache 1, ($t0)
|
||||
bltu $t0, $t1, .L80324E4C
|
||||
addiu $t0, 0x10 # addiu $t0, $t0, 0x10
|
||||
jr $ra
|
||||
nop
|
|
@ -1,23 +0,0 @@
|
|||
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
|
||||
#void osWritebackDCacheAll(void)
|
||||
|
||||
.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
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
typedef union
|
||||
{
|
||||
int i;
|
||||
float f;
|
||||
} fu;
|
||||
const fu NAN = {0x7f810000}; //nan 0x7f810000
|
|
@ -1,323 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "printf.h"
|
||||
#include <unused.h>
|
||||
#define BUFF_LEN 0x20
|
||||
s16 _Ldunscale(s16 *, printf_struct *);
|
||||
void _Genld(printf_struct *, u8, u8 *, s16, s16);
|
||||
const double D_80338670[] = {10e0L, 10e1L, 10e3L, 10e7L, 10e15L, 10e31L, 10e63L, 10e127L, 10e255L};
|
||||
|
||||
const u8 D_803386B8[] = "NaN";
|
||||
const u8 D_803386BC[] = "Inf";
|
||||
const u8 D_803386C0[] = "0"; //(0x3000000000000000);
|
||||
typedef union {
|
||||
struct
|
||||
{
|
||||
u32 upper;
|
||||
u32 lower;
|
||||
} i;
|
||||
f64 d;
|
||||
} du;
|
||||
const du D_803386C8 = {{0x4197d784, 0x00000000}}; //10.0e8;
|
||||
|
||||
/* float properties */
|
||||
#define _D0 0
|
||||
#define _DBIAS 0x3ff
|
||||
#define _DLONG 1
|
||||
#define _DOFF 4
|
||||
#define _FBIAS 0x7e
|
||||
#define _FOFF 7
|
||||
#define _FRND 1
|
||||
#define _LBIAS 0x3ffe
|
||||
#define _LOFF 15
|
||||
/* integer properties */
|
||||
#define _C2 1
|
||||
#define _CSIGN 1
|
||||
#define _ILONG 0
|
||||
#define _MBMAX 8
|
||||
#define NAN 2
|
||||
#define INF 1
|
||||
#define FINITE -1
|
||||
#define _DFRAC ((1 << _DOFF) - 1)
|
||||
#define _DMASK (0x7fff & ~_DFRAC)
|
||||
#define _DMAX ((1 << (15 - _DOFF)) - 1)
|
||||
#define _DNAN (0x8000 | _DMAX << _DOFF | 1 << (_DOFF - 1))
|
||||
#define _DSIGN 0x8000
|
||||
#if _D0 == 3
|
||||
#define _D1 2 /* little-endian order */
|
||||
#define _D2 1
|
||||
#define _D3 0
|
||||
#else
|
||||
#define _D1 1 /* big-endian order */
|
||||
#define _D2 2
|
||||
#define _D3 3
|
||||
#endif
|
||||
void _Ldtob(printf_struct *args, u8 type)
|
||||
{
|
||||
u8 buff[BUFF_LEN];
|
||||
u8 *ptr;
|
||||
UNUSED u32 sp70;
|
||||
f64 val;
|
||||
/* maybe struct? */
|
||||
s16 err;
|
||||
s16 nsig;
|
||||
s16 exp;
|
||||
|
||||
s32 i;
|
||||
s32 n;
|
||||
f64 factor;
|
||||
s32 gen;
|
||||
s32 j;
|
||||
s32 lo;
|
||||
ldiv_t qr;
|
||||
u8 drop;
|
||||
s32 n2;
|
||||
/* */
|
||||
UNUSED u8 unused[0x4];
|
||||
ptr = buff;
|
||||
val = args->value.f64;
|
||||
if (args->precision < 0)
|
||||
{
|
||||
args->precision = 6;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (args->precision == 0 && (type == 'g' || type == 'G'))
|
||||
{
|
||||
args->precision = 1;
|
||||
}
|
||||
}
|
||||
err = _Ldunscale(&exp, args);
|
||||
if (err > 0)
|
||||
{
|
||||
memcpy(args->buff, err == 2 ? D_803386B8 : D_803386BC, args->part2_len = 3);
|
||||
return;
|
||||
}
|
||||
if (err == 0)
|
||||
{
|
||||
nsig = 0;
|
||||
exp = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (val < 0)
|
||||
val = -val;
|
||||
exp = exp * 30103 / 0x000186A0 - 4;
|
||||
if (exp < 0)
|
||||
{
|
||||
n = (3 - exp) & ~3;
|
||||
exp = -n;
|
||||
for (i = 0; n > 0; n >>= 1, i++)
|
||||
{
|
||||
if ((n & 1) != 0)
|
||||
{
|
||||
val *= D_80338670[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (exp > 0)
|
||||
{
|
||||
factor = 1;
|
||||
exp &= ~3;
|
||||
n = exp;
|
||||
|
||||
for (i = 0; n > 0; n >>= 1, i++)
|
||||
{
|
||||
if ((n & 1) != 0)
|
||||
{
|
||||
factor *= D_80338670[i];
|
||||
}
|
||||
}
|
||||
val /= factor;
|
||||
}
|
||||
}
|
||||
gen = ((type == 'f') ? exp + 10 : 6) + args->precision;
|
||||
if (gen > 0x13)
|
||||
gen = 0x13;
|
||||
*ptr++ = '0';
|
||||
while (gen > 0 && 0 < val)
|
||||
{
|
||||
lo = val;
|
||||
if ((gen -= 8) > 0)
|
||||
{
|
||||
val = (val - lo) * D_803386C8.d;
|
||||
}
|
||||
ptr = ptr + 8;
|
||||
for (j = 8; lo > 0 && --j >= 0;)
|
||||
{
|
||||
qr = ldiv(lo, 10);
|
||||
*--ptr = qr.rem + '0';
|
||||
lo = qr.quot;
|
||||
}
|
||||
while (--j >= 0)
|
||||
{
|
||||
ptr--;
|
||||
*ptr = '0';
|
||||
}
|
||||
ptr += 8;
|
||||
}
|
||||
|
||||
gen = ptr - &buff[1];
|
||||
for (ptr = &buff[1], exp += 7; *ptr == '0'; ptr++)
|
||||
{
|
||||
--gen, --exp;
|
||||
}
|
||||
|
||||
nsig = ((type == 'f') ? exp + 1 : ((type == 'e' || type == 'E') ? 1 : 0)) + args->precision;
|
||||
if (gen < nsig)
|
||||
nsig = gen;
|
||||
if (nsig > 0)
|
||||
{
|
||||
if (nsig < gen && ptr[nsig] > '4')
|
||||
drop = '9';
|
||||
else
|
||||
drop = '0';
|
||||
|
||||
for (n2 = nsig; ptr[--n2] == drop;)
|
||||
{
|
||||
nsig--;
|
||||
}
|
||||
if (drop == '9')
|
||||
{
|
||||
ptr[n2]++;
|
||||
}
|
||||
if (n2 < 0)
|
||||
{
|
||||
--ptr, ++nsig,
|
||||
++exp;
|
||||
}
|
||||
}
|
||||
}
|
||||
_Genld(args, type, ptr, nsig, exp);
|
||||
}
|
||||
|
||||
s16 _Ldunscale(s16 *pex, printf_struct *px)
|
||||
{
|
||||
|
||||
unsigned short *ps = (unsigned short *)px;
|
||||
short xchar = (ps[_D0] & _DMASK) >> _DOFF;
|
||||
if (xchar == _DMAX)
|
||||
{ /* NaN or INF */
|
||||
*pex = 0;
|
||||
return (s16)(ps[_D0] & _DFRAC || ps[_D1] || ps[_D2] || ps[_D3] ? NAN : INF);
|
||||
}
|
||||
else if (0 < xchar)
|
||||
{
|
||||
ps[_D0] = (ps[_D0] & ~_DMASK) | (_DBIAS << _DOFF);
|
||||
*pex = xchar - (_DBIAS - 1);
|
||||
return (FINITE);
|
||||
}
|
||||
if (0 > xchar)
|
||||
return NAN;
|
||||
else
|
||||
{
|
||||
*pex = 0;
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
void _Genld(printf_struct *px, u8 code, u8 *p, s16 nsig, s16 xexp)
|
||||
{
|
||||
u8 point = '.';
|
||||
if (nsig <= 0)
|
||||
nsig = 1,
|
||||
|
||||
p = (u8 *)D_803386C0;
|
||||
|
||||
if (code == 'f' || ((code == 'g' || code == 'G') && (-4 <= xexp) && (xexp < px->precision)))
|
||||
{ /* 'f' format */
|
||||
++xexp; /* change to leading digit count */
|
||||
if (code != 'f')
|
||||
{ /* fixup for 'g' */
|
||||
if (!(px->flags & FLAGS_HASH) && nsig < px->precision)
|
||||
px->precision = nsig;
|
||||
if ((px->precision -= xexp) < 0)
|
||||
px->precision = 0;
|
||||
}
|
||||
if (xexp <= 0)
|
||||
{ /* digits only to right of point */
|
||||
px->buff[px->part2_len++] = '0';
|
||||
if (0 < px->precision || px->flags & FLAGS_HASH)
|
||||
px->buff[px->part2_len++] = point;
|
||||
if (px->precision < -xexp)
|
||||
xexp = -px->precision;
|
||||
px->num_mid_zeros = -xexp;
|
||||
px->precision += xexp;
|
||||
if (px->precision < nsig)
|
||||
nsig = px->precision;
|
||||
memcpy(&px->buff[px->part2_len], p, px->part3_len = nsig);
|
||||
px->num_trailing_zeros = px->precision - nsig;
|
||||
}
|
||||
else if (nsig < xexp)
|
||||
{ /* zeros before point */
|
||||
memcpy(&px->buff[px->part2_len], p, nsig);
|
||||
px->part2_len += nsig;
|
||||
px->num_mid_zeros = xexp - nsig;
|
||||
if (0 < px->precision || px->flags & FLAGS_HASH)
|
||||
px->buff[px->part2_len] = point, ++px->part3_len;
|
||||
px->num_trailing_zeros = px->precision;
|
||||
}
|
||||
else
|
||||
{ /* enough digits before point */
|
||||
memcpy(&px->buff[px->part2_len], p, xexp);
|
||||
px->part2_len += xexp;
|
||||
nsig -= xexp;
|
||||
if (0 < px->precision || px->flags & FLAGS_HASH)
|
||||
px->buff[px->part2_len++] = point;
|
||||
if (px->precision < nsig)
|
||||
nsig = px->precision;
|
||||
memcpy(&px->buff[px->part2_len], p + xexp, nsig);
|
||||
px->part2_len += nsig;
|
||||
px->num_mid_zeros = px->precision - nsig;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ /* 'e' format */
|
||||
if (code == 'g' || code == 'G')
|
||||
{ /* fixup for 'g' */
|
||||
if (nsig < px->precision)
|
||||
px->precision = nsig;
|
||||
if (--px->precision < 0)
|
||||
px->precision = 0;
|
||||
code = code == 'g' ? 'e' : 'E';
|
||||
}
|
||||
px->buff[px->part2_len++] = *p++;
|
||||
if (0 < px->precision || px->flags & FLAGS_HASH)
|
||||
px->buff[px->part2_len++] = point;
|
||||
if (0 < px->precision)
|
||||
{ /* put fraction digits */
|
||||
if (px->precision < --nsig)
|
||||
nsig = px->precision;
|
||||
memcpy(&px->buff[px->part2_len], p, nsig);
|
||||
px->part2_len += nsig;
|
||||
px->num_mid_zeros = px->precision - nsig;
|
||||
}
|
||||
p = (u8*)&px->buff[px->part2_len]; /* put exponent */
|
||||
*p++ = code;
|
||||
if (0 <= xexp)
|
||||
*p++ = '+';
|
||||
else
|
||||
{ /* negative exponent */
|
||||
*p++ = '-';
|
||||
xexp = -xexp;
|
||||
}
|
||||
if (100 <= xexp)
|
||||
{ /* put oversize exponent */
|
||||
if (1000 <= xexp)
|
||||
*p++ = xexp / 1000 + '0', xexp %= 1000;
|
||||
*p++ = xexp / 100 + '0', xexp %= 100;
|
||||
}
|
||||
*p++ = xexp / 10 + '0', xexp %= 10;
|
||||
*p++ = xexp + '0';
|
||||
px->part3_len = (u32)p - (u32)&px->buff[px->part2_len];
|
||||
}
|
||||
if ((px->flags & (FLAGS_ZERO | FLAGS_MINUS)) == FLAGS_ZERO)
|
||||
{ /* pad with leading zeros */
|
||||
int n = px->part1_len + px->part2_len + px->num_mid_zeros + px->part3_len + px->num_trailing_zeros;
|
||||
|
||||
if (n < px->width)
|
||||
px->num_leading_zeros = px->width - n;
|
||||
}
|
||||
}
|
|
@ -1,55 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "printf.h"
|
||||
|
||||
u8 D_80334960[] = "0123456789abcdef";
|
||||
u8 D_80334974[] = "0123456789ABCDEF";
|
||||
#define BUFF_LEN 0x18
|
||||
void _Litob(printf_struct *args, u8 type)
|
||||
{
|
||||
u8 buff[BUFF_LEN];
|
||||
const u8 *num_map;
|
||||
s32 base;
|
||||
s32 buff_ind;
|
||||
u64 num;
|
||||
lldiv_t quotrem;
|
||||
|
||||
if (type == 'X')
|
||||
num_map = D_80334974;
|
||||
else
|
||||
num_map = D_80334960;
|
||||
|
||||
base = (type == 'o') ? 8 : ((type != 'x' && type != 'X') ? 10 : 16);
|
||||
buff_ind = BUFF_LEN;
|
||||
num = args->value.s64;
|
||||
|
||||
if ((type == 'd' || type == 'i') && args->value.s64 < 0)
|
||||
num = -num;
|
||||
|
||||
if (num != 0 || args->precision != 0)
|
||||
buff[--buff_ind] = num_map[num % base];
|
||||
|
||||
args->value.s64 = num / base;
|
||||
|
||||
while (args->value.s64 > 0 && buff_ind > 0)
|
||||
{
|
||||
quotrem = lldiv(args->value.s64, base);
|
||||
args->value.s64 = quotrem.quot;
|
||||
buff[--buff_ind] = num_map[quotrem.rem];
|
||||
}
|
||||
|
||||
args->part2_len = BUFF_LEN - buff_ind;
|
||||
|
||||
memcpy(args->buff, buff + buff_ind, args->part2_len);
|
||||
|
||||
if (args->part2_len < args->precision)
|
||||
args->num_leading_zeros = args->precision - args->part2_len;
|
||||
|
||||
if (args->precision < 0 && (args->flags & (FLAGS_ZERO | FLAGS_MINUS)) == FLAGS_ZERO)
|
||||
{
|
||||
buff_ind = args->width - args->part1_len - args->num_leading_zeros - args->part2_len;
|
||||
if (buff_ind > 0)
|
||||
args->num_leading_zeros += buff_ind;
|
||||
}
|
||||
}
|
|
@ -1,241 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include "printf.h"
|
||||
|
||||
#define ATOI(i, a) \
|
||||
for (i = 0; *a >= '0' && *a <= '9'; a++) \
|
||||
if (i < 999) \
|
||||
i = *a + i * 10 - '0';
|
||||
#define _PROUT(dst, fmt, _size) \
|
||||
if (_size > 0) \
|
||||
{ \
|
||||
dst = prout(dst, fmt, _size); \
|
||||
if (dst != 0) \
|
||||
sp78.size += _size; \
|
||||
else \
|
||||
return sp78.size; \
|
||||
}
|
||||
#define _PAD(i, m, c, src, extracond) \
|
||||
if (extracond && m > 0) \
|
||||
for (i = m; i > 0; i -= c) \
|
||||
{ \
|
||||
if ((u32)i > 32) \
|
||||
c = 32; \
|
||||
else \
|
||||
c = i; \
|
||||
_PROUT(dst, src, c); \
|
||||
}
|
||||
|
||||
|
||||
const u8 length_str[] = "hlL";
|
||||
const u8 flags_str[] = " +-#0";
|
||||
const u32 flags_arr[] = {FLAGS_SPACE, FLAGS_PLUS, FLAGS_MINUS, FLAGS_HASH, FLAGS_ZERO, 0};
|
||||
char _spaces[] = " ";
|
||||
char _zeroes[] = "00000000000000000000000000000000";
|
||||
|
||||
void _Putfld(printf_struct *, va_list *, u8, u8 *);
|
||||
|
||||
s32 _Printf(char *prout(char *, const char *, size_t), char *dst, const char *fmt, va_list args)
|
||||
{
|
||||
printf_struct sp78;
|
||||
const u8 *fmt_ptr;
|
||||
u8 c;
|
||||
const u8 *flag_index;
|
||||
u8 sp4c[0x20]; //probably a buffer?
|
||||
s32 sp48, sp44, sp40, sp3c, sp38, sp34, sp30, sp2c, sp28, sp24;
|
||||
sp78.size = 0;
|
||||
while (1)
|
||||
{
|
||||
fmt_ptr = (u8 *)fmt;
|
||||
while ((c = *fmt_ptr++) > 0)
|
||||
{
|
||||
if (c == '%')
|
||||
{
|
||||
fmt_ptr--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
_PROUT(dst, fmt, (s32)fmt_ptr - (s32)fmt);
|
||||
if (c == 0)
|
||||
return sp78.size;
|
||||
sp78.flags = 0;
|
||||
fmt = (char *)++fmt_ptr;
|
||||
for (flag_index = strchr(flags_str, *fmt_ptr); flag_index != NULL; flag_index = strchr(flags_str, *++fmt_ptr))
|
||||
{
|
||||
sp78.flags |= flags_arr[flag_index - flags_str];
|
||||
}
|
||||
if (fmt_ptr[0] == '*')
|
||||
{
|
||||
sp78.width = va_arg(args, s32);
|
||||
if (sp78.width < 0)
|
||||
{
|
||||
sp78.width = -sp78.width;
|
||||
sp78.flags |= FLAGS_MINUS;
|
||||
}
|
||||
fmt_ptr++;
|
||||
}
|
||||
else
|
||||
{
|
||||
ATOI(sp78.width, fmt_ptr);
|
||||
}
|
||||
if (*fmt_ptr != '.')
|
||||
{
|
||||
sp78.precision = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
fmt_ptr++;
|
||||
if (*fmt_ptr == '*')
|
||||
{
|
||||
sp78.precision = va_arg(args, s32);
|
||||
fmt_ptr++;
|
||||
}
|
||||
else
|
||||
{
|
||||
ATOI(sp78.precision, fmt_ptr);
|
||||
}
|
||||
}
|
||||
if (strchr(length_str, *fmt_ptr) != NULL)
|
||||
sp78.length = *fmt_ptr++;
|
||||
else
|
||||
sp78.length = 0;
|
||||
|
||||
if (sp78.length == 'l' && *fmt_ptr == 'l')
|
||||
{
|
||||
sp78.length = 'L';
|
||||
fmt_ptr++;
|
||||
}
|
||||
_Putfld(&sp78, &args, *fmt_ptr, sp4c);
|
||||
sp78.width = sp78.width - (sp78.part1_len + sp78.num_leading_zeros + sp78.part2_len + sp78.num_mid_zeros + sp78.part3_len + sp78.num_trailing_zeros);
|
||||
_PAD(sp44, sp78.width, sp48, _spaces, !(sp78.flags & FLAGS_MINUS));
|
||||
_PROUT(dst, (char *)sp4c, sp78.part1_len);
|
||||
_PAD(sp3c, sp78.num_leading_zeros, sp40, _zeroes, 1);
|
||||
_PROUT(dst, sp78.buff, sp78.part2_len);
|
||||
_PAD(sp34, sp78.num_mid_zeros, sp38, _zeroes, 1);
|
||||
_PROUT(dst, (char *)(&sp78.buff[sp78.part2_len]), sp78.part3_len)
|
||||
_PAD(sp2c, sp78.num_trailing_zeros, sp30, _zeroes, 1);
|
||||
_PAD(sp24, sp78.width, sp28, _spaces, sp78.flags & FLAGS_MINUS);
|
||||
fmt = (char *)fmt_ptr + 1;
|
||||
}
|
||||
}
|
||||
|
||||
void _Putfld(printf_struct *a0, va_list *args, u8 type, u8 *buff)
|
||||
{
|
||||
a0->part1_len = a0->num_leading_zeros = a0->part2_len = a0->num_mid_zeros = a0->part3_len = a0->num_trailing_zeros = 0;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
|
||||
case 'c':
|
||||
buff[a0->part1_len++] = va_arg(*args, u32);
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
case 'i':
|
||||
if (a0->length == 'l')
|
||||
a0->value.s64 = va_arg(*args, s32);
|
||||
else if (a0->length == 'L')
|
||||
a0->value.s64 = va_arg(*args, s64);
|
||||
else
|
||||
a0->value.s64 = va_arg(*args, s32);
|
||||
|
||||
if (a0->length == 'h')
|
||||
a0->value.s64 = (s16)a0->value.s64;
|
||||
|
||||
if (a0->value.s64 < 0)
|
||||
buff[a0->part1_len++] = '-';
|
||||
else if (a0->flags & FLAGS_PLUS)
|
||||
buff[a0->part1_len++] = '+';
|
||||
else if (a0->flags & FLAGS_SPACE)
|
||||
buff[a0->part1_len++] = ' ';
|
||||
|
||||
a0->buff = (char *)&buff[a0->part1_len];
|
||||
|
||||
_Litob(a0, type);
|
||||
break;
|
||||
|
||||
case 'x':
|
||||
case 'X':
|
||||
case 'u':
|
||||
case 'o':
|
||||
if (a0->length == 'l')
|
||||
a0->value.s64 = va_arg(*args, s32);
|
||||
else if (a0->length == 'L')
|
||||
a0->value.s64 = va_arg(*args, s64);
|
||||
else
|
||||
a0->value.s64 = va_arg(*args, s32);
|
||||
|
||||
if (a0->length == 'h')
|
||||
a0->value.s64 = (u16)a0->value.s64;
|
||||
else if (a0->length == 0)
|
||||
a0->value.s64 = (u32)a0->value.s64;
|
||||
|
||||
if (a0->flags & FLAGS_HASH)
|
||||
{
|
||||
buff[a0->part1_len++] = '0';
|
||||
if (type == 'x' || type == 'X')
|
||||
|
||||
buff[a0->part1_len++] = type;
|
||||
}
|
||||
a0->buff = (char *)&buff[a0->part1_len];
|
||||
_Litob(a0, type);
|
||||
break;
|
||||
|
||||
case 'e':
|
||||
case 'f':
|
||||
case 'g':
|
||||
case 'E':
|
||||
case 'G':
|
||||
//... okay?
|
||||
a0->value.f64 = a0->length == 'L' ? va_arg(*args, f64) : va_arg(*args, f64);
|
||||
|
||||
if (a0->value.u16 & 0x8000)
|
||||
{
|
||||
buff[a0->part1_len++] = '-';
|
||||
}
|
||||
else
|
||||
{
|
||||
if (a0->flags & FLAGS_PLUS)
|
||||
buff[a0->part1_len++] = '+';
|
||||
else if (a0->flags & FLAGS_SPACE)
|
||||
buff[a0->part1_len++] = ' ';
|
||||
}
|
||||
|
||||
a0->buff = (char *)&buff[a0->part1_len];
|
||||
_Ldtob(a0, type);
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
if (a0->length == 'h')
|
||||
*(va_arg(*args, u16 *)) = a0->size;
|
||||
else if (a0->length == 'l')
|
||||
*va_arg(*args, u32 *) = a0->size;
|
||||
else if (a0->length == 'L')
|
||||
*va_arg(*args, u64 *) = a0->size;
|
||||
else
|
||||
*va_arg(*args, u32 *) = a0->size;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
a0->value.s64 = (long)va_arg(*args, void *); //void*
|
||||
a0->buff = (char *)&buff[a0->part1_len];
|
||||
_Litob(a0, 'x');
|
||||
break;
|
||||
|
||||
case 's':
|
||||
a0->buff = va_arg(*args, char *);
|
||||
a0->part2_len = strlen((u8*)a0->buff);
|
||||
if (a0->precision >= 0 && a0->part2_len > a0->precision)
|
||||
a0->part2_len = a0->precision;
|
||||
break;
|
||||
|
||||
case '%':
|
||||
buff[a0->part1_len++] = '%';
|
||||
break;
|
||||
|
||||
default:
|
||||
buff[a0->part1_len++] = type;
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include "hardware.h"
|
||||
|
||||
s32 __osAiDeviceBusy(void)
|
||||
{
|
||||
register s32 status = HW_REG(AI_STATUS_REG, u32);
|
||||
if ((status & AI_STATUS_AI_FULL) != 0)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
|
||||
s32 __osAtomicDec(u32 *a0)
|
||||
{
|
||||
s32 sp1c;
|
||||
s32 sp18;
|
||||
// addiu $sp, $sp, -0x20
|
||||
// sw $ra, 0x14($sp)
|
||||
// jal __osDisableInt
|
||||
// sw $a0, 0x20($sp)
|
||||
sp1c = __osDisableInt();
|
||||
// lw $t6, 0x20($sp)
|
||||
// sw $v0, 0x1c($sp)
|
||||
// lw $t7, ($t6)
|
||||
// beqz $t7, .L8032A2F8
|
||||
// nop
|
||||
if(*a0 != 0){
|
||||
// addiu $t8, $t7, -1
|
||||
// sw $t8, ($t6)
|
||||
// li $t9, 1
|
||||
// b .L8032A2FC
|
||||
// sw $t9, 0x18($sp)
|
||||
(*a0)--;
|
||||
sp18 = 1;
|
||||
}else{
|
||||
//.L8032A2F8:
|
||||
// sw $zero, 0x18($sp)
|
||||
sp18 = 0;
|
||||
}
|
||||
//.L8032A2FC:
|
||||
// jal __osRestoreInt
|
||||
// lw $a0, 0x1c($sp)
|
||||
__osRestoreInt(sp1c);
|
||||
// lw $ra, 0x14($sp)
|
||||
// lw $v0, 0x18($sp)
|
||||
// addiu $sp, $sp, 0x20
|
||||
// jr $ra
|
||||
// nop
|
||||
return sp18;
|
||||
|
||||
// nop
|
||||
// nop
|
||||
}
|
|
@ -1,51 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
|
||||
//these don't feel like they belong here
|
||||
//but it makes the most logical since there was printf data before
|
||||
OSThread *D_80334890 = NULL;
|
||||
u32 unknown = -1;
|
||||
OSThread *D_80334898 = (OSThread*)&D_80334890;
|
||||
OSThread *D_8033489C = (OSThread*)&D_80334890;
|
||||
OSThread *D_803348A0 = NULL;
|
||||
u32 D_803348A4 = 0; //UNKNOWN
|
||||
|
||||
|
||||
void __osDequeueThread(OSThread **queue, OSThread *thread)
|
||||
{
|
||||
register OSThread **a2;
|
||||
register OSThread *a3;
|
||||
a2 = queue;
|
||||
a3 = *a2;
|
||||
// move $a2, $a0
|
||||
// lw $a3, ($a2)
|
||||
// addiu $sp, $sp, -8
|
||||
// beqz $a3, .L80326598
|
||||
// nop
|
||||
//.L80326574:
|
||||
// bne $a3, $a1, .L80326588
|
||||
// nop
|
||||
while (a3 != NULL)
|
||||
{
|
||||
if (a3 == thread)
|
||||
{
|
||||
*a2 = thread->next;
|
||||
return;
|
||||
}
|
||||
// lw $t6, ($a1)
|
||||
// b .L80326598
|
||||
// sw $t6, ($a2)
|
||||
//.L80326588:
|
||||
// move $a2, $a3
|
||||
a2 = &a3->next;
|
||||
// lw $a3, ($a2)
|
||||
a3 = *a2;
|
||||
// bnez $a3, .L80326574
|
||||
// nop
|
||||
//a3 = a3->next;
|
||||
}
|
||||
//a3->next = thread->next;
|
||||
|
||||
//.L80326598:
|
||||
// jr $ra
|
||||
// addiu $sp, $sp, 8
|
||||
}
|
|
@ -1,144 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
|
||||
void __osDevMgrMain(void *args)
|
||||
{
|
||||
OSIoMesg *sp34;
|
||||
OSMesg sp30;
|
||||
OSMesg sp2c;
|
||||
s32 sp28;
|
||||
OSMgrArgs *sp24;
|
||||
// addiu $sp, $sp, -0x38
|
||||
// sw $a0, 0x38($sp)
|
||||
// lw $t6, 0x38($sp)
|
||||
// sw $ra, 0x1c($sp)
|
||||
// sw $s0, 0x18($sp)
|
||||
// sw $zero, 0x34($sp)
|
||||
sp34 = NULL;
|
||||
// sw $zero, 0x28($sp)
|
||||
sp28 = 0;
|
||||
// sw $t6, 0x24($sp)
|
||||
sp24 = (OSMgrArgs *)args;
|
||||
while (1)
|
||||
{
|
||||
//.L80327630:
|
||||
// lw $t7, 0x24($sp)
|
||||
// addiu $a1, $sp, 0x34
|
||||
// li $a2, 1
|
||||
// jal osRecvMesg
|
||||
// lw $a0, 8($t7)
|
||||
osRecvMesg(sp24->unk08, (OSMesg)&sp34, OS_MESG_BLOCK);
|
||||
// lw $t8, 0x34($sp)
|
||||
// li $at, 10
|
||||
// lhu $s0, ($t8)
|
||||
// beq $s0, $at, .L803276E8
|
||||
// li $at, 11
|
||||
// beq $s0, $at, .L80327670
|
||||
// li $at, 12
|
||||
// beq $s0, $at, .L803276AC
|
||||
// nop
|
||||
// b .L80327708
|
||||
// nop
|
||||
switch (sp34->hdr.type)
|
||||
{
|
||||
case 11:
|
||||
//.L80327670:
|
||||
// lw $t9, 0x24($sp)
|
||||
// addiu $a1, $sp, 0x2c
|
||||
// li $a2, 1
|
||||
// jal osRecvMesg
|
||||
// lw $a0, 0x10($t9)
|
||||
osRecvMesg(sp24->unk10, &sp2c, OS_MESG_BLOCK);
|
||||
// lw $t1, 0x24($sp)
|
||||
// lw $t0, 0x34($sp)
|
||||
// move $a0, $zero
|
||||
// lw $t9, 0x14($t1)
|
||||
// lw $a1, 0xc($t0)
|
||||
// lw $a2, 8($t0)
|
||||
// jalr $t9
|
||||
// lw $a3, 0x10($t0)
|
||||
// b .L80327710
|
||||
// sw $v0, 0x28($sp)
|
||||
sp28 = sp24->dma_func(0 /*write*/, sp34->devAddr, sp34->dramAddr, sp34->size);
|
||||
break;
|
||||
case 12:
|
||||
//.L803276AC:
|
||||
// lw $t2, 0x24($sp)
|
||||
// addiu $a1, $sp, 0x2c
|
||||
// li $a2, 1
|
||||
// jal osRecvMesg
|
||||
// lw $a0, 0x10($t2)
|
||||
osRecvMesg(sp24->unk10, &sp2c, OS_MESG_BLOCK);
|
||||
// lw $t4, 0x24($sp)
|
||||
// lw $t3, 0x34($sp)
|
||||
// li $a0, 1
|
||||
// lw $t9, 0x14($t4)
|
||||
// lw $a1, 0xc($t3)
|
||||
// lw $a2, 8($t3)
|
||||
// jalr $t9
|
||||
// lw $a3, 0x10($t3)
|
||||
// b .L80327710
|
||||
// sw $v0, 0x28($sp)
|
||||
sp28 = sp24->dma_func(1 /*read*/, sp34->devAddr, sp34->dramAddr, sp34->size);
|
||||
break;
|
||||
case 10:
|
||||
//.L803276E8:
|
||||
// lw $t5, 0x34($sp)
|
||||
// move $a2, $zero
|
||||
// lw $a0, 4($t5)
|
||||
// jal osSendMesg
|
||||
// move $a1, $t5
|
||||
osSendMesg(sp34->hdr.retQueue, sp34, OS_MESG_NOBLOCK);
|
||||
// li $t6, -1
|
||||
// b .L80327710
|
||||
// sw $t6, 0x28($sp)
|
||||
sp28 = -1;
|
||||
break;
|
||||
default:
|
||||
//.L80327708:
|
||||
// li $t7, -1
|
||||
// sw $t7, 0x28($sp)
|
||||
sp28 = -1;
|
||||
break;
|
||||
}
|
||||
//.L80327710:
|
||||
// lw $t8, 0x28($sp)
|
||||
// bnez $t8, .L80327630
|
||||
// nop
|
||||
if (sp28 == 0)
|
||||
{
|
||||
// lw $t0, 0x24($sp)
|
||||
// addiu $a1, $sp, 0x30
|
||||
// li $a2, 1
|
||||
// jal osRecvMesg
|
||||
// lw $a0, 0xc($t0)
|
||||
osRecvMesg(sp24->unk0c, &sp30, OS_MESG_BLOCK);
|
||||
// lw $t1, 0x34($sp)
|
||||
// move $a2, $zero
|
||||
// lw $a0, 4($t1)
|
||||
// jal osSendMesg
|
||||
// move $a1, $t1
|
||||
osSendMesg(sp34->hdr.retQueue, sp34, OS_MESG_NOBLOCK);
|
||||
// lw $t2, 0x24($sp)
|
||||
// move $a1, $zero
|
||||
// move $a2, $zero
|
||||
// jal osSendMesg
|
||||
// lw $a0, 0x10($t2)
|
||||
osSendMesg(sp24->unk10, NULL, OS_MESG_NOBLOCK);
|
||||
}
|
||||
// b .L80327630
|
||||
// nop
|
||||
}
|
||||
// nop
|
||||
// nop
|
||||
// nop
|
||||
// nop
|
||||
// lw $ra, 0x1c($sp)
|
||||
// lw $s0, 0x18($sp)
|
||||
// addiu $sp, $sp, 0x38
|
||||
// jr $ra
|
||||
// nop
|
||||
|
||||
// nop
|
||||
// nop
|
||||
// nop
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#define PIAccessQueueSize 2
|
||||
OSMesg osPiMesgBuff[PIAccessQueueSize];
|
||||
OSMesgQueue gOsPiMessageQueue;
|
||||
u32 gOsPiAccessQueueCreated = 0;
|
||||
void __osPiCreateAccessQueue()
|
||||
{
|
||||
gOsPiAccessQueueCreated = 1;
|
||||
osCreateMesgQueue(&gOsPiMessageQueue, &osPiMesgBuff[0], PIAccessQueueSize - 1);
|
||||
osSendMesg(&gOsPiMessageQueue, NULL, OS_MESG_NOBLOCK);
|
||||
}
|
||||
|
||||
void __osPiGetAccess()
|
||||
{
|
||||
OSMesg sp1c;
|
||||
if (!gOsPiAccessQueueCreated)
|
||||
__osPiCreateAccessQueue();
|
||||
osRecvMesg(&gOsPiMessageQueue, &sp1c, OS_MESG_BLOCK);
|
||||
}
|
||||
void __osPiRelAccess()
|
||||
{
|
||||
osSendMesg(&gOsPiMessageQueue, NULL, OS_MESG_NOBLOCK);
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#define SIAccessQueueSize 2
|
||||
OSMesg osSiMesgBuff[SIAccessQueueSize];
|
||||
OSMesgQueue gOsSiMessageQueue;
|
||||
|
||||
u32 gOsSiAccessQueueCreated = 0;
|
||||
void __osSiCreateAccessQueue()
|
||||
{
|
||||
gOsSiAccessQueueCreated = 1;
|
||||
osCreateMesgQueue(&gOsSiMessageQueue, &osSiMesgBuff[0], SIAccessQueueSize - 1);
|
||||
osSendMesg(&gOsSiMessageQueue, NULL, OS_MESG_NOBLOCK);
|
||||
}
|
||||
|
||||
void __osSiGetAccess(void)
|
||||
{
|
||||
OSMesg sp1c;
|
||||
if (!gOsSiAccessQueueCreated)
|
||||
__osSiCreateAccessQueue();
|
||||
osRecvMesg(&gOsSiMessageQueue, &sp1c, OS_MESG_BLOCK);
|
||||
}
|
||||
|
||||
void __osSiRelAccess(void)
|
||||
{
|
||||
osSendMesg(&gOsSiMessageQueue, NULL, OS_MESG_NOBLOCK);
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include "hardware.h"
|
||||
s32 __osSiDeviceBusy()
|
||||
{
|
||||
register u32 status;
|
||||
// lui $t6, %hi(D_A4800018) # $t6, 0xa480
|
||||
// lw $a0, %lo(D_A4800018)($t6)
|
||||
// addiu $sp, $sp, -8
|
||||
// andi $t7, $a0, 3
|
||||
// beqz $t7, .L8032A110
|
||||
// nop
|
||||
status = HW_REG(SI_STATUS_REG, u32);
|
||||
if (status & (SI_STATUS_DMA_BUSY | SI_STATUS_IO_READ_BUSY))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
return 0;
|
||||
}
|
||||
// b .L8032A114
|
||||
// li $v0, 1
|
||||
//.L8032A110:
|
||||
// move $v0, $zero
|
||||
//.L8032A114:
|
||||
// jr $ra
|
||||
// addiu $sp, $sp, 8
|
||||
|
||||
// nop
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include "hardware.h"
|
||||
s32 __osSiRawReadIo(void *a0, u32 *a1)
|
||||
{
|
||||
if (__osSiDeviceBusy())
|
||||
return -1;
|
||||
*a1 = HW_REG((u32)a0, u32);
|
||||
return 0;
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include "hardware.h"
|
||||
s32 __osSiRawStartDma(s32 dir, void *addr)
|
||||
{
|
||||
if (__osSiDeviceBusy())
|
||||
return -1;
|
||||
if (dir == 1)
|
||||
{
|
||||
osWritebackDCache(addr, 64);
|
||||
}
|
||||
HW_REG(SI_DRAM_ADDR_REG, void *) = (void*)osVirtualToPhysical(addr);
|
||||
if (dir == 0 /*read*/)
|
||||
{
|
||||
HW_REG(SI_PIF_ADDR_RD64B_REG, u32) = 0x1FC007C0;
|
||||
}
|
||||
else
|
||||
{
|
||||
HW_REG(SI_PIF_ADDR_WR64B_REG, u32) = 0x1FC007C0;
|
||||
}
|
||||
if (dir == 0)
|
||||
{
|
||||
osInvalDCache(addr, 64);
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include "hardware.h"
|
||||
s32 __osSiRawWriteIo(void *a0, u32 a1)
|
||||
{
|
||||
if (__osSiDeviceBusy())
|
||||
return -1;
|
||||
HW_REG((u32)a0, u32) = a1;
|
||||
return 0;
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include "hardware.h"
|
||||
|
||||
s32 __osSpDeviceBusy()
|
||||
{
|
||||
register u32 status = HW_REG(SP_STATUS_REG, u32);
|
||||
if (status & (SPSTATUS_IO_FULL | SPSTATUS_DMA_FULL | SPSTATUS_DMA_BUSY))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include "hardware.h"
|
||||
u32 __osSpGetStatus()
|
||||
{
|
||||
return HW_REG(SP_STATUS_REG, u32);
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include "hardware.h"
|
||||
|
||||
s32 __osSpRawStartDma(u32 dir, void *sp_ptr, void *dram_ptr, size_t size)
|
||||
{
|
||||
if (__osSpDeviceBusy())
|
||||
return -1;
|
||||
HW_REG(SP_MEM_ADDR_REG, void *) = sp_ptr;
|
||||
HW_REG(SP_DRAM_ADDR_REG, void *) = (void *)osVirtualToPhysical(dram_ptr);
|
||||
if (dir == 0)
|
||||
HW_REG(SP_WR_LEN_REG, u32) = size - 1;
|
||||
else
|
||||
HW_REG(SP_RD_LEN_REG, u32) = size - 1;
|
||||
return 0;
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include "hardware.h"
|
||||
|
||||
s32 __osSpSetPc(void *pc)
|
||||
{
|
||||
register u32 status = HW_REG(SP_STATUS_REG, u32);
|
||||
if (!(status & SPSTATUS_HALT))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
HW_REG(SP_PC_REG, void *) = pc;
|
||||
return 0;
|
||||
}
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include "hardware.h"
|
||||
void __osSpSetStatus(u32 status)
|
||||
{
|
||||
HW_REG(SP_STATUS_REG, u32) = status;
|
||||
}
|
|
@ -1,116 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 unk00 : 2;
|
||||
u8 pad : 4;
|
||||
u8 unk01 : 2;
|
||||
u8 unk2[3];
|
||||
} unkStruct;
|
||||
u32 D_80334A40 = 0;
|
||||
u32 D_80334A44 = 1;
|
||||
|
||||
void __osSyncPutChars(s32 a0, s32 a1, u8 *a2)
|
||||
{
|
||||
unkStruct sp24;
|
||||
s32 sp20;
|
||||
u32 sp1c;
|
||||
// addiu $sp, $sp, -0x28
|
||||
// sw $a0, a0
|
||||
// lw $t6, a0
|
||||
// lbu $t0, 0x24($sp)
|
||||
// sw $a1, a1
|
||||
// andi $t7, $t6, 3
|
||||
// lw $t3, a1
|
||||
// sll $t8, $t7, 6
|
||||
// andi $t9, $t8, 0xc0
|
||||
// andi $t1, $t0, 0xff3f
|
||||
// or $t2, $t9, $t1
|
||||
// andi $t6, $t2, 0xff
|
||||
// andi $t4, $t3, 3
|
||||
// andi $t5, $t4, 3
|
||||
// andi $t7, $t6, 0xfffc
|
||||
// sb $t2, 0x24($sp)
|
||||
// or $t8, $t5, $t7
|
||||
// sw $ra, 0x14($sp)
|
||||
// sw $a2, a2
|
||||
// sb $t8, 0x24($sp)
|
||||
// blez $t3, .L80329E28
|
||||
// sw $zero, 0x20($sp)
|
||||
sp24.unk00 = a0;
|
||||
sp24.unk01 = a1;
|
||||
for (sp20 = 0; sp20 < a1; sp20++)
|
||||
{
|
||||
//.L80329DF8:
|
||||
// lw $t0, a2
|
||||
// lw $t9, 0x20($sp)
|
||||
// addu $t1, $t0, $t9
|
||||
// lbu $t4, ($t1)
|
||||
// addu $t2, $sp, $t9
|
||||
// sb $t4, 0x25($t2)
|
||||
sp24.unk2[sp20] = a2[sp20];
|
||||
// lw $t6, 0x20($sp)
|
||||
// lw $t7, a1
|
||||
// addiu $t5, $t6, 1
|
||||
// slt $at, $t5, $t7
|
||||
// bnez $at, .L80329DF8
|
||||
// sw $t5, 0x20($sp)
|
||||
}
|
||||
//.L80329E28:
|
||||
// lui $a0, %hi(D_80334A44) # $a0, 0x8033
|
||||
// jal __osAtomicDec
|
||||
// addiu $a0, %lo(D_80334A44) # addiu $a0, $a0, 0x4a44
|
||||
// bnez $v0, .L80329E50
|
||||
// nop
|
||||
while (!__osAtomicDec(&D_80334A44))
|
||||
;
|
||||
//.L80329E3C:
|
||||
// lui $a0, %hi(D_80334A44) # $a0, 0x8033
|
||||
// jal __osAtomicDec
|
||||
// addiu $a0, %lo(D_80334A44) # addiu $a0, $a0, 0x4a44
|
||||
// beqz $v0, .L80329E3C
|
||||
// nop
|
||||
//.L80329E50:
|
||||
// jal __osDisableInt
|
||||
// nop
|
||||
sp1c = __osDisableInt();
|
||||
// sw $v0, 0x1c($sp)
|
||||
// addiu $t8, $sp, 0x24
|
||||
// lw $t3, ($t8)
|
||||
// lui $t0, 0xc000
|
||||
// jal __osGetCause
|
||||
// sw $t3, ($t0)
|
||||
*(u32 *)0xC0000000 = *(u32 *)&sp24;
|
||||
// andi $t1, $v0, 0x2000
|
||||
// bnez $t1, .L80329E90
|
||||
// nop
|
||||
//.L80329E7C:
|
||||
// jal __osGetCause
|
||||
// nop
|
||||
// andi $t4, $v0, 0x2000
|
||||
// beqz $t4, .L80329E7C
|
||||
// nop
|
||||
while (!(__osGetCause() & 0x2000))
|
||||
;
|
||||
//.L80329E90:
|
||||
// lui $t9, %hi(D_C000000C) # $t9, 0xc000
|
||||
// sw $zero, %lo(D_C000000C)($t9)
|
||||
*(u32 *)0xC000000C = 0;
|
||||
// lui $t2, %hi(D_80334A44) # $t2, 0x8033
|
||||
// lw $t2, %lo(D_80334A44)($t2)
|
||||
// lui $at, %hi(D_80334A44) # $at, 0x8033
|
||||
// lw $a0, 0x1c($sp)
|
||||
// addiu $t6, $t2, 1
|
||||
// jal __osRestoreInt
|
||||
// sw $t6, %lo(D_80334A44)($at)
|
||||
D_80334A44++;
|
||||
__osRestoreInt(sp1c);
|
||||
// lw $ra, 0x14($sp)
|
||||
// addiu $sp, $sp, 0x28
|
||||
// jr $ra
|
||||
// nop
|
||||
|
||||
// nop
|
||||
// nop
|
||||
// nop
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
extern OSViContext*D_80334910;
|
||||
OSViContext* __osViGetCurrentContext(){
|
||||
return D_80334910;
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include "hardware.h"
|
||||
|
||||
#ifdef VERSION_US
|
||||
extern u32 osTvType;
|
||||
#endif
|
||||
|
||||
OSViContext D_803348B0[2] = {0};
|
||||
OSViContext *D_80334910 = &D_803348B0[0];
|
||||
OSViContext *D_80334914 = &D_803348B0[1];
|
||||
u32 D_80334918 = TV_TYPE_NTSC;
|
||||
u32 D_8033491C = 0x02E6D354;
|
||||
|
||||
extern OSViMode D_80334990;
|
||||
extern OSViMode D_803349E0;
|
||||
void __osViInit(void)
|
||||
{
|
||||
//#ifdef VERSION_JP
|
||||
#ifdef VERSION_US
|
||||
D_80334918 = osTvType;
|
||||
#endif
|
||||
bzero(D_803348B0, sizeof(D_803348B0));
|
||||
D_80334910 = &D_803348B0[0];
|
||||
D_80334914 = &D_803348B0[1];
|
||||
D_80334914->retraceCount = 1;
|
||||
D_80334910->retraceCount = 1;
|
||||
#ifdef VERSION_JP
|
||||
if (D_80334918 != TV_TYPE_PAL)
|
||||
#else
|
||||
if (D_80334918 == TV_TYPE_NTSC)
|
||||
#endif
|
||||
{
|
||||
D_80334914->unk08 = &D_80334990;
|
||||
D_8033491C = 0x02E6D354;
|
||||
}
|
||||
else
|
||||
{
|
||||
D_80334914->unk08 = &D_803349E0;
|
||||
#ifdef VERSION_JP
|
||||
D_8033491C = 0x02F5B2D2;
|
||||
#else
|
||||
D_8033491C = 0x02E6025C;
|
||||
#endif
|
||||
}
|
||||
D_80334914->unk00 = 32;
|
||||
D_80334914->features = D_80334914->unk08->comRegs.ctrl;
|
||||
#ifdef VERSION_US
|
||||
while (HW_REG(VI_CURRENT_REG, u32) > 0xa)
|
||||
;
|
||||
HW_REG(VI_STATUS_REG, u32) = 0;
|
||||
#endif
|
||||
__osViSwapContext();
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include "hardware.h"
|
||||
extern OSViContext *D_80334914;
|
||||
extern OSViContext *D_80334910;
|
||||
void __osViSwapContext()
|
||||
{
|
||||
register OSViMode *s0;
|
||||
register OSViContext *s1;
|
||||
u32 origin;
|
||||
u32 hStart;
|
||||
u32 sp34;
|
||||
u32 field;
|
||||
register u32 s2;
|
||||
field = 0;
|
||||
s1 = D_80334914;
|
||||
s0 = s1->unk08;
|
||||
field = HW_REG(VI_V_CURRENT_LINE_REG, u32) & 1;
|
||||
s2 = osVirtualToPhysical(s1->buffer);
|
||||
origin = (s0->fldRegs[field].origin) + s2;
|
||||
if (s1->unk00 & 2)
|
||||
{
|
||||
s1->unk20 |= s0->comRegs.xScale & ~0xfff;
|
||||
}
|
||||
else
|
||||
{
|
||||
s1->unk20 = s0->comRegs.xScale;
|
||||
}
|
||||
if (s1->unk00 & 4)
|
||||
{
|
||||
sp34 = (u32)(s0->fldRegs[field].yScale & 0xfff);
|
||||
s1->unk2c = s1->unk24 * sp34;
|
||||
s1->unk2c |= s0->fldRegs[field].yScale & ~0xfff;
|
||||
}
|
||||
else
|
||||
{
|
||||
s1->unk2c = s0->fldRegs[field].yScale;
|
||||
}
|
||||
hStart = s0->comRegs.hStart;
|
||||
if (s1->unk00 & 0x20)
|
||||
hStart = 0;
|
||||
if (s1->unk00 & 0x40)
|
||||
{
|
||||
s1->unk2c = 0;
|
||||
origin = osVirtualToPhysical(s1->buffer);
|
||||
}
|
||||
if (s1->unk00 & 0x80)
|
||||
{
|
||||
s1->unk2c = (s1->unk28 << 0x10) & 0x3ff0000;
|
||||
origin = osVirtualToPhysical(s1->buffer);
|
||||
}
|
||||
HW_REG(VI_ORIGIN_REG, u32) = origin;
|
||||
HW_REG(VI_WIDTH_REG, u32) = s0->comRegs.width;
|
||||
HW_REG(VI_BURST_REG, u32) = s0->comRegs.burst;
|
||||
HW_REG(VI_V_SYNC_REG, u32) = s0->comRegs.vSync;
|
||||
HW_REG(VI_H_SYNC_REG, u32) = s0->comRegs.hSync;
|
||||
HW_REG(VI_LEAP_REG, u32) = s0->comRegs.leap;
|
||||
HW_REG(VI_H_START_REG, u32) = hStart;
|
||||
HW_REG(VI_V_START_REG, u32) = s0->fldRegs[field].vStart;
|
||||
HW_REG(VI_V_BURST_REG, u32) = s0->fldRegs[field].vBurst;
|
||||
HW_REG(VI_INTR_REG, u32) = s0->fldRegs[field].vIntr;
|
||||
HW_REG(VI_X_SCALE_REG, u32) = s1->unk20;
|
||||
HW_REG(VI_Y_SCALE_REG, u32) = s1->unk2c;
|
||||
HW_REG(VI_CONTROL_REG, u32) = s1->features;
|
||||
D_80334914 = D_80334910;
|
||||
D_80334910 = s1;
|
||||
*D_80334914 = *D_80334910;
|
||||
}
|
|
@ -1,263 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
#include "libaudio_internal.h"
|
||||
#define PATCH(SRC, BASE, TYPE) SRC = (TYPE)((u32)SRC + (u32)BASE)
|
||||
|
||||
|
||||
void alSeqFileNew(ALSeqFile *f, u8 *base)
|
||||
{
|
||||
int i;
|
||||
// lh $t6, 2($a0)
|
||||
// move $v0, $zero
|
||||
// move $v1, $a0
|
||||
// blez $t6, .L80324DE0
|
||||
// nop
|
||||
for (i = 0; i < f->seqCount; i++)
|
||||
{
|
||||
// lw $t7, 4($v1)
|
||||
//.L80324DC0:
|
||||
// addiu $v0, $v0, 1
|
||||
// addiu $v1, $v1, 8
|
||||
// addu $t8, $t7, $a1
|
||||
// sw $t8, -4($v1)
|
||||
f->seqArray[i].offset = (u32)(f->seqArray[i].offset) + base;
|
||||
// lh $t9, 2($a0)
|
||||
// slt $at, $v0, $t9
|
||||
// bnezl $at, .L80324DC0
|
||||
// lw $t7, 4($v1)
|
||||
}
|
||||
//.L80324DE0:
|
||||
// jr $ra
|
||||
// nop
|
||||
|
||||
// nop
|
||||
// nop
|
||||
}
|
||||
static void _bnkfPatchBank(ALInstrument *f, ALBankFile *a1, u8 *a3)
|
||||
{
|
||||
int i;
|
||||
ALSound *sound;
|
||||
ALWaveTable *wavetable;
|
||||
u8 *a3_2;
|
||||
// lbu $t6, 3($a0)
|
||||
// bnez $t6, .L80324C94
|
||||
// nop
|
||||
if (f->flags)
|
||||
return;
|
||||
|
||||
// lh $t7, 0xe($a0)
|
||||
// li $t1, 1
|
||||
// sb $t1, 3($a0)
|
||||
f->flags = 1;
|
||||
// blez $t7, .L80324C94
|
||||
// move $v0, $zero
|
||||
for (i = 0; i < f->soundCount; i++)
|
||||
{
|
||||
// move $v1, $a0
|
||||
// li $t2, 1
|
||||
// lw $t8, 0x10($v1)
|
||||
//.L80324BDC:
|
||||
// addu $t9, $t8, $a1
|
||||
// sw $t9, 0x10($v1)
|
||||
PATCH(f->soundArray[i], a1, ALSound *);
|
||||
sound = f->soundArray[i];
|
||||
|
||||
// lbu $t6, 0xe($t9)
|
||||
// move $a2, $t9
|
||||
// bnezl $t6, .L80324C80
|
||||
if (sound->flags)
|
||||
continue;
|
||||
a3_2 = a3;
|
||||
|
||||
// lh $t8, 0xe($a0)
|
||||
// lw $t7, ($t9)
|
||||
// sb $t1, 0xe($t9)
|
||||
|
||||
sound->flags = 1;
|
||||
// addu $t8, $t7, $a1
|
||||
// sw $t8, ($t9)
|
||||
PATCH(sound->envelope, a1, ALEnvelope *);
|
||||
//sound->envelope = (u32)sound->envelope + (u32)f;
|
||||
// lw $t9, 4($t9)
|
||||
// lw $t7, 8($a2)
|
||||
// addu $t6, $t9, $a1
|
||||
// addu $t8, $t7, $a1
|
||||
// sw $t6, 4($a2)
|
||||
PATCH(sound->keyMap, a1, ALKeyMap *);
|
||||
// sw $t8, 8($a2)
|
||||
PATCH(sound->wavetable, a1, ALWaveTable *);
|
||||
// lbu $t9, 9($t8)
|
||||
// move $t0, $t8
|
||||
wavetable = sound->wavetable;
|
||||
// bnezl $t9, .L80324C80
|
||||
// lh $t8, 0xe($a0)
|
||||
if (wavetable->flags)
|
||||
continue;
|
||||
|
||||
// lw $t6, ($t8)
|
||||
// lbu $a2, 8($t8)
|
||||
// sb $t1, 9($t8)
|
||||
// addu $t7, $t6, $a3
|
||||
wavetable->flags = 1;
|
||||
// bnez $a2, .L80324C64
|
||||
// sw $t7, ($t8)
|
||||
PATCH(wavetable->base, a3_2, u8 *);
|
||||
if (wavetable->type == 0)
|
||||
{
|
||||
// lw $t8, 0x10($t8)
|
||||
// lw $a2, 0xc($t0)
|
||||
// addu $t9, $t8, $a1
|
||||
// beqz $a2, .L80324C7C
|
||||
// sw $t9, 0x10($t0)
|
||||
PATCH(wavetable->waveInfo.adpcmWave.book, a1, ALADPCMBook *);
|
||||
if (wavetable->waveInfo.adpcmWave.loop != NULL)
|
||||
PATCH(wavetable->waveInfo.adpcmWave.loop, a1, ALADPCMloop *);
|
||||
// addu $t6, $a2, $a1
|
||||
// b .L80324C7C
|
||||
// sw $t6, 0xc($t0)
|
||||
}
|
||||
else if (wavetable->type == 1)
|
||||
{
|
||||
//.L80324C64:
|
||||
// bnel $t2, $a2, .L80324C80
|
||||
// lh $t8, 0xe($a0)
|
||||
// lw $a2, 0xc($t0)
|
||||
// beqz $a2, .L80324C7C
|
||||
if (wavetable->waveInfo.rawWave.loop != NULL)
|
||||
// addu $t7, $a2, $a1
|
||||
// sw $t7, 0xc($t0)
|
||||
PATCH(wavetable->waveInfo.rawWave.loop, a1, ALRawLoop *);
|
||||
//.L80324C7C:
|
||||
// lh $t8, 0xe($a0)
|
||||
}
|
||||
|
||||
//.L80324C80:
|
||||
// addiu $v0, $v0, 1
|
||||
// addiu $v1, $v1, 4
|
||||
// slt $at, $v0, $t8
|
||||
// bnezl $at, .L80324BDC
|
||||
// lw $t8, 0x10($v1)
|
||||
}
|
||||
|
||||
//.L80324C94:
|
||||
// jr $ra
|
||||
// nop
|
||||
}
|
||||
//force adding another jr $ra. has to be called or it doesn't get put in the right place
|
||||
static void unused()
|
||||
{
|
||||
// jr $ra
|
||||
// nop
|
||||
}
|
||||
|
||||
//glabel alBnkfNew
|
||||
void alBnkfNew(ALBankFile *f, u8 *table)
|
||||
{
|
||||
//ALInstrument *_inst;
|
||||
ALBank *bank;
|
||||
int i;
|
||||
int j;
|
||||
unused();
|
||||
// addiu $sp, $sp, -0x30
|
||||
// sw $ra, 0x2c($sp)
|
||||
// sw $s4, 0x28($sp)
|
||||
// sw $s3, 0x24($sp)
|
||||
// sw $s2, 0x20($sp)
|
||||
// sw $s1, 0x1c($sp)
|
||||
// sw $s0, 0x18($sp)
|
||||
// lh $t6, ($a0)
|
||||
// li $at, 16945
|
||||
// move $s0, $a0
|
||||
// bne $t6, $at, .L80324D88
|
||||
// move $s1, $a1
|
||||
if (f->revision != AL_BANK_VERSION)
|
||||
return;
|
||||
|
||||
// lh $t7, 2($a0)
|
||||
// move $s3, $zero
|
||||
// move $s2, $a0
|
||||
// blez $t7, .L80324D88
|
||||
// li $s4, 1
|
||||
for (i = 0; i < f->bankCount; i++)
|
||||
{
|
||||
// lw $t8, 4($s2)
|
||||
//.L80324CEC:
|
||||
// addu $t9, $t8, f
|
||||
// beqz $t9, .L80324D70
|
||||
// sw $t9, 4($s2)
|
||||
PATCH(f->bankArray[i], f, ALBank *);
|
||||
if (f->bankArray[i] == NULL)
|
||||
continue;
|
||||
|
||||
// lbu $t6, 2($t9)
|
||||
// move $t5, $t9
|
||||
bank = f->bankArray[i];
|
||||
// bnezl $t6, .L80324D74
|
||||
// lh $t8, 2(f)
|
||||
if (bank->flags == 0)
|
||||
{
|
||||
// lw $v0, 8($t9)
|
||||
// sb $s4, 2($t9)
|
||||
bank->flags = 1;
|
||||
// move $t4, $zero
|
||||
// beqz $v0, .L80324D2C
|
||||
// addu $a0, $v0, f
|
||||
if (bank->percussion != NULL)
|
||||
{
|
||||
// sw $a0, 8($t9)
|
||||
PATCH(bank->percussion, f, ALInstrument *);
|
||||
// move $a1, f
|
||||
// jal _bnkfPatchBank
|
||||
// move $a3, $s1
|
||||
_bnkfPatchBank(bank->percussion, f, table);
|
||||
}
|
||||
//.L80324D2C:
|
||||
// lh $t8, ($t5)
|
||||
// move $t3, $t5
|
||||
// blezl $t8, .L80324D74
|
||||
// lh $t8, 2(f)
|
||||
for (j = 0; j < bank->instCount; j++)
|
||||
{
|
||||
// lw $t9, 0xc($t3)
|
||||
//.L80324D40:
|
||||
// move $a1, f
|
||||
// addu $a0, $t9, f
|
||||
// beqz $a0, .L80324D58
|
||||
// sw $a0, 0xc($t3)
|
||||
PATCH(bank->instArray[j], f, ALInstrument *);
|
||||
//inst = bank->instArray[j];
|
||||
if (bank->instArray[j] != NULL)
|
||||
{
|
||||
|
||||
// jal _bnkfPatchBank
|
||||
// move $a3, $s1
|
||||
_bnkfPatchBank(bank->instArray[j], f, table);
|
||||
}
|
||||
//.L80324D58:
|
||||
// lh $t7, ($t5)
|
||||
// addiu $t4, $t4, 1
|
||||
// addiu $t3, $t3, 4
|
||||
// slt $at, $t4, $t7
|
||||
// bnezl $at, .L80324D40
|
||||
// lw $t9, 0xc($t3)
|
||||
}
|
||||
}
|
||||
|
||||
//.L80324D70:
|
||||
// lh $t8, 2(f)
|
||||
//.L80324D74:
|
||||
// addiu $s3, $s3, 1
|
||||
// addiu $s2, $s2, 4
|
||||
// slt $at, $s3, $t8
|
||||
// bnezl $at, .L80324CEC
|
||||
// lw $t8, 4($s2)
|
||||
}
|
||||
//.L80324D88:
|
||||
// lw $ra, 0x2c($sp)
|
||||
// lw $s0, 0x18($sp)
|
||||
// lw $s1, 0x1c($sp)
|
||||
// lw $s2, 0x20($sp)
|
||||
// lw $s3, 0x24($sp)
|
||||
// lw $s4, 0x28($sp)
|
||||
// jr $ra
|
||||
// addiu $sp, $sp, 0x30
|
||||
}
|
|
@ -1,64 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
|
||||
void guMtxF2L(float mf[4][4], Mtx *m)
|
||||
{
|
||||
int r, c;
|
||||
long tmp1;
|
||||
long tmp2;
|
||||
long *m1 = &m->m[0][0];
|
||||
long *m2 = &m->m[2][0];
|
||||
for (r = 0; r < 4; r++)
|
||||
{
|
||||
for (c = 0; c < 2; c++)
|
||||
{
|
||||
tmp1 = mf[r][2 * c] * 65536.0f;
|
||||
tmp2 = mf[r][2 * c + 1] * 65536.0f;
|
||||
*m1++ = (tmp1 & 0xffff0000) | ((tmp2 >> 0x10) & 0xffff);
|
||||
*m2++ = ((tmp1 << 0x10) & 0xffff0000) | (tmp2 & 0xffff);
|
||||
}
|
||||
}
|
||||
}
|
||||
void guMtxL2F(float mf[4][4], Mtx *m)
|
||||
{
|
||||
int r, c;
|
||||
u32 tmp1;
|
||||
u32 tmp2;
|
||||
u32 *m1;
|
||||
u32 *m2;
|
||||
s32 stmp1, stmp2;
|
||||
m1 = (u32 *)&m->m[0][0];
|
||||
m2 = (u32 *)&m->m[2][0];
|
||||
for (r = 0; r < 4; r++)
|
||||
{
|
||||
for (c = 0; c < 2; c++)
|
||||
{
|
||||
tmp1 = (*m1 & 0xffff0000) | ((*m2 >> 0x10) & 0xffff);
|
||||
tmp2 = ((*m1++ << 0x10) & 0xffff0000) | (*m2++ & 0xffff);
|
||||
stmp1 = *(s32 *)&tmp1;
|
||||
stmp2 = *(s32 *)&tmp2;
|
||||
mf[r][c * 2 + 0] = stmp1 / 65536.0f;
|
||||
mf[r][c * 2 + 1] = stmp2 / 65536.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void guMtxIdentF(float mf[4][4])
|
||||
{
|
||||
int r, c;
|
||||
for (r = 0; r < 4; r++)
|
||||
{
|
||||
for (c = 0; c < 4; c++)
|
||||
{
|
||||
if (r == c)
|
||||
mf[r][c] = 1.0f;
|
||||
else
|
||||
mf[r][c] = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
void guMtxIdent(Mtx *m)
|
||||
{
|
||||
float mf[4][4];
|
||||
guMtxIdentF(mf);
|
||||
guMtxF2L(mf, m);
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
|
||||
void guNormalize(f32 *x, f32 *y, f32 *z)
|
||||
{
|
||||
f32 tmp = 1.0f / sqrtf(*x * *x + *y * *y + *z * *z);
|
||||
*x = *x * tmp;
|
||||
*y = *y * tmp;
|
||||
*z = *z * tmp;
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
|
||||
void guOrthoF(float m[4][4], float left, float right, float bottom, float top,
|
||||
float near, float far, float scale)
|
||||
{
|
||||
int row;
|
||||
int col;
|
||||
guMtxIdentF(m);
|
||||
m[0][0] = 2 / (right - left);
|
||||
m[1][1] = 2 / (top - bottom);
|
||||
m[2][2] = -2 / (far - near);
|
||||
m[3][0] = -(right + left) / (right - left);
|
||||
m[3][1] = -(top + bottom) / (top - bottom);
|
||||
m[3][2] = -(far + near) / (far - near);
|
||||
m[3][3] = 1;
|
||||
for (row = 0; row < 4; row++)
|
||||
{
|
||||
for (col = 0; col < 4; col++)
|
||||
m[row][col] *= scale;
|
||||
}
|
||||
}
|
||||
|
||||
void guOrtho(Mtx *m, float left, float right, float bottom, float top,
|
||||
float near, float far, float scale)
|
||||
{
|
||||
float sp28[4][4];
|
||||
guOrthoF(sp28, left, right, bottom, top, near, far, scale);
|
||||
guMtxF2L(sp28, m);
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
|
||||
void guPerspectiveF(float mf[4][4], u16 *perspNorm, float fovy, float aspect,
|
||||
float near, float far, float scale)
|
||||
{
|
||||
float yscale;
|
||||
int row;
|
||||
int col;
|
||||
guMtxIdentF(mf);
|
||||
fovy *= GU_PI / 180.0;
|
||||
yscale = cosf(fovy / 2) / sinf(fovy / 2);
|
||||
mf[0][0] = yscale / aspect;
|
||||
mf[1][1] = yscale;
|
||||
mf[2][2] = (near + far) / (near - far);
|
||||
mf[2][3] = -1;
|
||||
mf[3][2] = 2 * near * far / (near - far);
|
||||
mf[3][3] = 0.0f;
|
||||
for (row = 0; row < 4; row++)
|
||||
{
|
||||
for (col = 0; col < 4; col++)
|
||||
{
|
||||
mf[row][col] *= scale;
|
||||
}
|
||||
}
|
||||
if (perspNorm != NULL)
|
||||
{
|
||||
if (near + far <= 2.0)
|
||||
{
|
||||
*perspNorm = 65535;
|
||||
}
|
||||
else
|
||||
{
|
||||
*perspNorm = (double)(1 << 17) / (near + far);
|
||||
if (*perspNorm <= 0)
|
||||
*perspNorm = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
void guPerspective(Mtx *m, u16 *perspNorm, float fovy, float aspect, float near,
|
||||
float far, float scale)
|
||||
{
|
||||
float mat[4][4];
|
||||
guPerspectiveF(mat, perspNorm, fovy, aspect, near, far, scale);
|
||||
guMtxF2L(mat, m);
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
|
||||
void guRotateF(float m[4][4], float a, float x, float y, float z)
|
||||
{
|
||||
float sin_a;
|
||||
float cos_a;
|
||||
float sp2c;
|
||||
float sp28;
|
||||
float sp24;
|
||||
float xx, yy, zz;
|
||||
static float D_80365D70 = GU_PI / 180;
|
||||
|
||||
guNormalize(&x, &y, &z);
|
||||
|
||||
a = a * D_80365D70;
|
||||
|
||||
sin_a = sinf(a);
|
||||
cos_a = cosf(a);
|
||||
|
||||
sp2c = x * y * (1 - cos_a);
|
||||
sp28 = y * z * (1 - cos_a);
|
||||
sp24 = z * x * (1 - cos_a);
|
||||
|
||||
guMtxIdentF(m);
|
||||
xx = x * x;
|
||||
m[0][0] = (1 - xx) * cos_a + xx;
|
||||
m[2][1] = sp28 - x * sin_a;
|
||||
m[1][2] = sp28 + x * sin_a;
|
||||
yy = y * y;
|
||||
m[1][1] = (1 - yy) * cos_a + yy;
|
||||
m[2][0] = sp24 + y * sin_a;
|
||||
m[0][2] = sp24 - y * sin_a;
|
||||
zz = z * z;
|
||||
m[2][2] = (1 - zz) * cos_a + zz;
|
||||
m[1][0] = sp2c - z * sin_a;
|
||||
m[0][1] = sp2c + z * sin_a;
|
||||
}
|
||||
|
||||
void guRotate(Mtx *m, float a, float x, float y, float z)
|
||||
{
|
||||
float mf[4][4];
|
||||
guRotateF(mf, a, x, y, z);
|
||||
guMtxF2L(mf, m);
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
|
||||
void guScaleF(float mf[4][4], float x, float y, float z)
|
||||
{
|
||||
guMtxIdentF(mf);
|
||||
mf[0][0] = x;
|
||||
mf[1][1] = y;
|
||||
mf[2][2] = z;
|
||||
mf[3][3] = 1.0;
|
||||
}
|
||||
void guScale(Mtx *m, float x, float y, float z)
|
||||
{
|
||||
float mf[4][4];
|
||||
guScaleF(mf, x, y, z);
|
||||
guMtxF2L(mf, m);
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
|
||||
void guTranslateF(float m[4][4], float x, float y, float z)
|
||||
{
|
||||
guMtxIdentF(m);
|
||||
m[3][0] = x;
|
||||
m[3][1] = y;
|
||||
m[3][2] = z;
|
||||
}
|
||||
void guTranslate(Mtx *m, float x, float y, float z)
|
||||
{
|
||||
float mf[4][4];
|
||||
guTranslateF(mf,x,y,z);
|
||||
guMtxF2L(mf, m);
|
||||
}
|
|
@ -1,85 +0,0 @@
|
|||
#ifndef _HARDWARE_H_
|
||||
#define _HARDWARE_H_
|
||||
|
||||
#define HW_REG(reg, type) *(volatile type *)(reg | 0xa0000000)
|
||||
|
||||
#define AI_DRAM_ADDR_REG 0x04500000
|
||||
#define AI_LEN_REG 0x04500004
|
||||
#define AI_CONTROL_REG 0x04500008
|
||||
#define AI_STATUS_REG 0x0450000C
|
||||
#define AI_STATUS_AI_FULL (1 << 31)
|
||||
#define AI_STATUS_AI_BUSY (1 << 30)
|
||||
#define AI_DACRATE_REG 0x04500010
|
||||
#define AI_BITRATE_REG 0x04500014
|
||||
|
||||
#define VI_STATUS_REG 0x04400000
|
||||
#define VI_CONTROL_REG 0x04400000
|
||||
#define VI_ORIGIN_REG 0x04400004
|
||||
#define VI_DRAM_ADDR_REG 0x04400004
|
||||
#define VI_WIDTH_REG 0x04400008
|
||||
#define VI_H_WIDTH_REG 0x04400008
|
||||
#define VI_INTR_REG 0x0440000C
|
||||
#define VI_V_INTER_REG 0x0440000C
|
||||
#define VI_CURRENT_REG 0x04400010
|
||||
#define VI_V_CURRENT_LINE_REG 0x04400010
|
||||
#define VI_BURST_REG 0x04400014
|
||||
#define VI_TIMING_REG 0x04400014
|
||||
#define VI_V_SYNC_REG 0x04400018 //VI vertical sync
|
||||
#define VI_H_SYNC_REG 0x0440001C //VI horizontal sync
|
||||
#define VI_LEAP_REG 0x04400020 //VI horizontal sync leap
|
||||
#define VI_H_SYNC_LEAP_REG 0x04400020
|
||||
#define VI_H_START_REG 0x04400024 //VI horizontal video
|
||||
#define VI_H_VIDEO_REG 0x04400024
|
||||
#define VI_V_START_REG 0x04400028 //VI vertical video
|
||||
#define VI_V_VIDEO_REG 0x04400028
|
||||
#define VI_V_BURST_REG 0x0440002C //VI vertical burst
|
||||
#define VI_X_SCALE_REG 0x04400030 //VI x-scale
|
||||
#define VI_Y_SCALE_REG 0x04400034 //VI y-scale
|
||||
|
||||
#define SP_IMEM_START 0x04001000
|
||||
#define SP_DMEM_START 0x04000000
|
||||
|
||||
#define SP_MEM_ADDR_REG 0x04040000
|
||||
#define SP_DRAM_ADDR_REG 0x04040004
|
||||
#define SP_RD_LEN_REG 0x04040008
|
||||
#define SP_WR_LEN_REG 0x0404000C
|
||||
#define SP_STATUS_REG 0x04040010
|
||||
#define SP_PC_REG 0x04080000
|
||||
|
||||
#define PI_DRAM_ADDR_REG 0x04600000 //PI DRAM address
|
||||
#define PI_CART_ADDR_REG 0x04600004 //PI pbus (cartridge) address
|
||||
#define PI_RD_LEN_REG 0x04600008 //PI read length
|
||||
#define PI_WR_LEN_REG 0x0460000C //PI write length
|
||||
#define PI_STATUS_REG 0x04600010 //PI status
|
||||
#define PI_BSD_DOM1_LAT_REG 0x04600014 //PI dom1 latency
|
||||
#define PI_DOMAIN1_REG 0x04600014
|
||||
#define PI_BSD_DOM1_PWD_REG 0x04600018 //PI dom1 pulse width
|
||||
#define PI_BSD_DOM1_PGS_REG 0x0460001C //PI dom1 page size
|
||||
#define PI_BSD_DOM1_RLS_REG 0x04600020 //PI dom1 release
|
||||
#define PI_BSD_DOM2_LAT_REG 0x04600024 //PI dom2 latency
|
||||
#define PI_DOMAIN2_REG 0x04600024
|
||||
#define PI_BSD_DOM2_PWD_REG 0x04600028 //PI dom2 pulse width
|
||||
#define PI_BSD_DOM2_PGS_REG 0x0460002C //PI dom2 page size
|
||||
#define PI_BSD_DOM2_RLS_REG 0x04600030 //PI dom2 release
|
||||
|
||||
#define PI_STATUS_BUSY 0x1
|
||||
#define PI_STATUS_IOBUSY 0x2
|
||||
#define PI_STATUS_ERROR 0x3
|
||||
|
||||
#define SI_DRAM_ADDR_REG 0x04800000
|
||||
#define SI_PIF_ADDR_RD64B_REG 0x04800004
|
||||
#define SI_PIF_ADDR_WR64B_REG 0x04800010
|
||||
#define SI_STATUS_REG 0x04800018
|
||||
|
||||
#define SI_STATUS_DMA_BUSY 0x1
|
||||
#define SI_STATUS_IO_READ_BUSY 0x2
|
||||
#define SI_STATUS_DMA_ERROR 0x8
|
||||
#define SI_STATUS_INTERRUPT (1 << 12)
|
||||
|
||||
#define MI_INIT_MODE_REG 0x04300000
|
||||
#define MI_MODE_REG MI_INIT_MODE_REG
|
||||
#define MI_VERSION_REG 0x04300004
|
||||
#define MI_INTR_REG 0x04300008
|
||||
#define MI_INTR_MASK_REG 0x0430000C
|
||||
|
||||
#endif
|
|
@ -1,147 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
typedef struct
|
||||
{
|
||||
u8 unk00 : 2;
|
||||
u8 pad : 4;
|
||||
u8 unk01 : 2;
|
||||
u8 unk2[3];
|
||||
} unkStruct;
|
||||
|
||||
extern u32 D_80334A44;
|
||||
u32 D_80334A30 = 0;
|
||||
|
||||
u32 D_80334A34 = 0;
|
||||
|
||||
s32 D_80334A38 = 0;
|
||||
|
||||
u8 D_80365E40[0x100];
|
||||
OSThread gInterruptedThread;
|
||||
|
||||
void u32_to_string(u32 i, u8 *str)
|
||||
{
|
||||
str[0] = (i >> 0x18) & 0xff;
|
||||
str[1] = (i >> 0x10) & 0xff;
|
||||
str[2] = (i >> 0x8) & 0xff;
|
||||
str[3] = i & 0xff;
|
||||
}
|
||||
u32 string_to_u32(u8 *str)
|
||||
{
|
||||
u32 i;
|
||||
i = (str[0] & 0xff) << 0x18;
|
||||
i |= (str[1] & 0xff) << 0x10;
|
||||
i |= (str[2] & 0xff) << 0x8;
|
||||
i |= (str[3] & 0xff);
|
||||
return i;
|
||||
}
|
||||
|
||||
void send_packet(u8 *a0, s32 a1)
|
||||
{
|
||||
unkStruct sp1c;
|
||||
s32 i;
|
||||
sp1c.unk00 = 2;
|
||||
;
|
||||
for (sp1c.unk01 = a1, i = 0; i < a1; i++)
|
||||
|
||||
{
|
||||
sp1c.unk2[i] = a0[i];
|
||||
}
|
||||
*(u32 *)0xc0000000 = *(u32 *)&sp1c;
|
||||
while (!(__osGetCause() & 0x2000))
|
||||
;
|
||||
*(u32 *)0xc000000c = 0;
|
||||
}
|
||||
void send(u8 *buff, s32 len)
|
||||
{
|
||||
s32 i;
|
||||
s32 end;
|
||||
s32 rem;
|
||||
if (!D_80334A44)
|
||||
{
|
||||
while (!(__osGetCause() & 0x2000))
|
||||
;
|
||||
*(u32 *)0xC000000C = 0;
|
||||
D_80334A44 = 1;
|
||||
}
|
||||
i = 0;
|
||||
rem = len % 3;
|
||||
end = len - rem;
|
||||
for (; i < end; i += 3)
|
||||
{
|
||||
send_packet(&buff[i], 3);
|
||||
}
|
||||
if (rem > 0)
|
||||
{
|
||||
send_packet(&buff[end], rem);
|
||||
}
|
||||
}
|
||||
void process_command_memory()
|
||||
{
|
||||
u32 sp1c;
|
||||
u32 sp18;
|
||||
sp1c = string_to_u32(&D_80365E40[1]);
|
||||
sp18 = string_to_u32(&D_80365E40[5]);
|
||||
send((u8 *)sp1c, sp18);
|
||||
}
|
||||
void process_command_register()
|
||||
{
|
||||
send((u8 *)&gInterruptedThread.context, sizeof(__OSThreadContext));
|
||||
}
|
||||
|
||||
void kdebugserver(u32 a0)
|
||||
{
|
||||
u32 sp2c;
|
||||
unkStruct sp28;
|
||||
*(u32 *)&sp28 = a0;
|
||||
for (sp2c = 0; sp2c < sp28.unk01; sp2c++)
|
||||
{
|
||||
D_80365E40[D_80334A34] = sp28.unk2[sp2c];
|
||||
D_80334A34++;
|
||||
}
|
||||
D_80334A38 -= sp28.unk01;
|
||||
switch (D_80334A30)
|
||||
{
|
||||
case 0:
|
||||
switch (sp28.unk2[0])
|
||||
{
|
||||
case 1:
|
||||
D_80334A30 = 1;
|
||||
D_80334A38 = 9 - sp28.unk01;
|
||||
break;
|
||||
case 2:
|
||||
process_command_register();
|
||||
D_80334A30 = 0;
|
||||
D_80334A34 = 0;
|
||||
D_80334A38 = 0;
|
||||
break;
|
||||
default:
|
||||
D_80334A30 = 0;
|
||||
D_80334A34 = 0;
|
||||
D_80334A38 = 0;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (D_80334A38 <= 0)
|
||||
{
|
||||
if (D_80365E40[0] == 1)
|
||||
{
|
||||
process_command_memory();
|
||||
D_80334A30 = 0;
|
||||
D_80334A34 = 0;
|
||||
D_80334A38 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
D_80334A30 = 0;
|
||||
D_80334A34 = 0;
|
||||
D_80334A38 = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
D_80334A30 = 0;
|
||||
D_80334A34 = 0;
|
||||
D_80334A38 = 0;
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
#include "libultra_internal.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
lldiv_t lldiv(long long num, long long denom)
|
||||
{
|
||||
lldiv_t ret;
|
||||
|
||||
ret.quot = num / denom;
|
||||
ret.rem = num - denom * ret.quot;
|
||||
if (ret.quot < 0 && ret.rem > 0)
|
||||
{
|
||||
ret.quot++;
|
||||
ret.rem -= denom;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
ldiv_t ldiv(long num, long denom)
|
||||
{
|
||||
ldiv_t ret;
|
||||
|
||||
ret.quot = num / denom;
|
||||
ret.rem = num - denom * ret.quot;
|
||||
if (ret.quot < 0 && ret.rem > 0)
|
||||
{
|
||||
ret.quot++;
|
||||
ret.rem -= denom;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
|
@ -1,133 +0,0 @@
|
|||
#ifndef _LIBAUDIO_INTERNAL_H_
|
||||
#define _LIBAUDIO_INTERNAL_H_
|
||||
|
||||
/* abi.h */
|
||||
#define ADPCMVSIZE 8
|
||||
#define ADPCMFSIZE 16
|
||||
typedef short ADPCM_STATE[ADPCMFSIZE];
|
||||
/**/
|
||||
|
||||
#define AL_BANK_VERSION 0x4231 /* 'B1' */
|
||||
|
||||
typedef u8 ALPan;
|
||||
typedef s32 ALMicroTime;
|
||||
|
||||
/* Possible wavetable types */
|
||||
enum
|
||||
{
|
||||
AL_ADPCM_WAVE = 0,
|
||||
AL_RAW16_WAVE
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
s32 order;
|
||||
s32 npredictors;
|
||||
s16 book[1]; /* Actually variable size. Must be 8-byte aligned */
|
||||
} ALADPCMBook;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 start;
|
||||
u32 end;
|
||||
u32 count;
|
||||
ADPCM_STATE state;
|
||||
} ALADPCMloop;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 start;
|
||||
u32 end;
|
||||
u32 count;
|
||||
} ALRawLoop;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ALMicroTime attackTime;
|
||||
ALMicroTime decayTime;
|
||||
ALMicroTime releaseTime;
|
||||
u8 attackVolume;
|
||||
u8 decayVolume;
|
||||
} ALEnvelope;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 velocityMin;
|
||||
u8 velocityMax;
|
||||
u8 keyMin;
|
||||
u8 keyMax;
|
||||
u8 keyBase;
|
||||
s8 detune;
|
||||
} ALKeyMap;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ALADPCMloop *loop;
|
||||
ALADPCMBook *book;
|
||||
} ALADPCMWaveInfo;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ALRawLoop *loop;
|
||||
} ALRAWWaveInfo;
|
||||
|
||||
typedef struct ALWaveTable_s
|
||||
{
|
||||
u8 *base; /* ptr to start of wave data */
|
||||
s32 len; /* length of data in bytes */
|
||||
u8 type; /* compression type */
|
||||
u8 flags; /* offset/address flags */
|
||||
union {
|
||||
ALADPCMWaveInfo adpcmWave;
|
||||
ALRAWWaveInfo rawWave;
|
||||
} waveInfo;
|
||||
} ALWaveTable;
|
||||
|
||||
typedef struct ALSound_s
|
||||
{
|
||||
ALEnvelope *envelope;
|
||||
ALKeyMap *keyMap;
|
||||
ALWaveTable *wavetable; /* offset to wavetable struct */
|
||||
ALPan samplePan;
|
||||
u8 sampleVolume;
|
||||
u8 flags;
|
||||
} ALSound;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 volume; /* overall volume for this instrument */
|
||||
ALPan pan; /* 0 = hard left, 127 = hard right */
|
||||
u8 priority; /* voice priority for this instrument */
|
||||
u8 flags;
|
||||
u8 tremType; /* the type of tremelo osc. to use */
|
||||
u8 tremRate; /* the rate of the tremelo osc. */
|
||||
u8 tremDepth; /* the depth of the tremelo osc */
|
||||
u8 tremDelay; /* the delay for the tremelo osc */
|
||||
u8 vibType; /* the type of tremelo osc. to use */
|
||||
u8 vibRate; /* the rate of the tremelo osc. */
|
||||
u8 vibDepth; /* the depth of the tremelo osc */
|
||||
u8 vibDelay; /* the delay for the tremelo osc */
|
||||
s16 bendRange; /* pitch bend range in cents */
|
||||
s16 soundCount; /* number of sounds in this array */
|
||||
ALSound *soundArray[1];
|
||||
} ALInstrument;
|
||||
|
||||
typedef struct ALBank_s
|
||||
{
|
||||
s16 instCount; /* number of programs in this bank */
|
||||
u8 flags;
|
||||
u8 pad;
|
||||
s32 sampleRate; /* e.g. 44100, 22050, etc... */
|
||||
ALInstrument *percussion; /* default percussion for GM */
|
||||
ALInstrument *instArray[1]; /* ARRAY of instruments */
|
||||
} ALBank;
|
||||
|
||||
typedef struct
|
||||
{ /* Note: sizeof won't be correct */
|
||||
s16 revision; /* format revision of this file */
|
||||
s16 bankCount; /* number of banks */
|
||||
ALBank *bankArray[1]; /* ARRAY of bank offsets */
|
||||
} ALBankFile;
|
||||
|
||||
void alBnkfNew(ALBankFile *f, u8 *table);
|
||||
#endif
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue