Browse Source

Refresh 3

master
n64 1 year ago
parent
commit
a7c423cb43
100 changed files with 7750 additions and 3811 deletions
  1. +27
    -0
      CHANGES
  2. +51
    -35
      Makefile
  3. +109
    -123
      Makefile.split
  4. +1
    -1
      README.md
  5. +54
    -0
      actors/amp/anims/anim_0800401C.inc.c
  6. +1
    -0
      actors/amp/anims/data.inc.c
  7. +4
    -0
      actors/amp/anims/table.inc.c
  8. +0
    -2
      actors/amp/collision.s
  9. +56
    -0
      actors/amp/geo.inc.c
  10. +0
    -54
      actors/amp/geo.s
  11. +534
    -0
      actors/amp/model.inc.c
  12. +0
    -503
      actors/amp/model.s
  13. +36
    -0
      actors/bird/anims/anim_050008D0.inc.c
  14. +36
    -0
      actors/bird/anims/anim_050009D0.inc.c
  15. +2
    -0
      actors/bird/anims/data.inc.c
  16. +5
    -0
      actors/bird/anims/table.inc.c
  17. +0
    -2
      actors/bird/collision.s
  18. +25
    -0
      actors/bird/geo.inc.c
  19. +0
    -23
      actors/bird/geo.s
  20. +227
    -0
      actors/bird/model.inc.c
  21. +0
    -254
      actors/bird/model.s
  22. +48
    -0
      actors/blargg/anims/anim_05006070.inc.c
  23. +34
    -0
      actors/blargg/anims/anim_05006154.inc.c
  24. +2
    -0
      actors/blargg/anims/data.inc.c
  25. +7
    -0
      actors/blargg/anims/table.inc.c
  26. +0
    -2
      actors/blargg/collision.s
  27. +20
    -0
      actors/blargg/geo.inc.c
  28. +0
    -18
      actors/blargg/geo.s
  29. +527
    -0
      actors/blargg/model.inc.c
  30. +0
    -545
      actors/blargg/model.s
  31. +29
    -0
      actors/blue_coin_switch/collision.inc.c
  32. +0
    -27
      actors/blue_coin_switch/collision.s
  33. +10
    -0
      actors/blue_coin_switch/geo.inc.c
  34. +0
    -8
      actors/blue_coin_switch/geo.s
  35. +96
    -0
      actors/blue_coin_switch/model.inc.c
  36. +0
    -79
      actors/blue_coin_switch/model.s
  37. +35
    -0
      actors/blue_fish/anims/anim_0301C298.inc.c
  38. +1
    -0
      actors/blue_fish/anims/data.inc.c
  39. +5
    -0
      actors/blue_fish/anims/table.inc.c
  40. +0
    -2
      actors/blue_fish/collision.s
  41. +32
    -0
      actors/blue_fish/geo.inc.c
  42. +0
    -28
      actors/blue_fish/geo.s
  43. +120
    -0
      actors/blue_fish/model.inc.c
  44. +0
    -137
      actors/blue_fish/model.s
  45. +68
    -0
      actors/bobomb/anims/anim_080237FC.inc.c
  46. +43
    -0
      actors/bobomb/anims/anim_08023954.inc.c
  47. +2
    -0
      actors/bobomb/anims/data.inc.c
  48. +6
    -0
      actors/bobomb/anims/table.inc.c
  49. +0
    -2
      actors/bobomb/collision.s
  50. +99
    -0
      actors/bobomb/geo.inc.c
  51. +0
    -95
      actors/bobomb/geo.s
  52. +353
    -0
      actors/bobomb/model.inc.c
  53. +0
    -393
      actors/bobomb/model.s
  54. +0
    -2
      actors/bomb/collision.s
  55. +15
    -0
      actors/bomb/geo.inc.c
  56. +0
    -13
      actors/bomb/geo.s
  57. +218
    -0
      actors/bomb/model.inc.c
  58. +0
    -186
      actors/bomb/model.s
  59. +0
    -2
      actors/boo/collision.s
  60. +17
    -0
      actors/boo/geo.inc.c
  61. +0
    -15
      actors/boo/geo.s
  62. +359
    -0
      actors/boo/model.inc.c
  63. +0
    -319
      actors/boo/model.s
  64. +0
    -2
      actors/boo_castle/collision.s
  65. +17
    -0
      actors/boo_castle/geo.inc.c
  66. +0
    -15
      actors/boo_castle/geo.s
  67. +359
    -0
      actors/boo_castle/model.inc.c
  68. +0
    -319
      actors/boo_castle/model.s
  69. +0
    -2
      actors/book/collision.s
  70. +8
    -0
      actors/book/geo.inc.c
  71. +0
    -6
      actors/book/geo.s
  72. +98
    -0
      actors/book/model.inc.c
  73. +0
    -83
      actors/book/model.s
  74. +32
    -0
      actors/bookend/anims/anim_050023F4.inc.c
  75. +40
    -0
      actors/bookend/anims/anim_05002510.inc.c
  76. +12
    -0
      actors/bookend/anims/anim_05002528.inc.c
  77. +3
    -0
      actors/bookend/anims/data.inc.c
  78. +7
    -0
      actors/bookend/anims/table.inc.c
  79. +0
    -2
      actors/bookend/collision.s
  80. +29
    -0
      actors/bookend/geo.inc.c
  81. +0
    -27
      actors/bookend/geo.s
  82. +474
    -0
      actors/bookend/model.inc.c
  83. +0
    -455
      actors/bookend/model.s
  84. +0
    -2
      actors/bowling_ball/collision.s
  85. +27
    -0
      actors/bowling_ball/geo.inc.c
  86. +0
    -23
      actors/bowling_ball/geo.s
  87. +0
    -5
      actors/bowling_ball/model.s
  88. +269
    -0
      actors/bowser/anims/anim_060445EC.inc.c
  89. +251
    -0
      actors/bowser/anims/anim_060453C8.inc.c
  90. +179
    -0
      actors/bowser/anims/anim_06045D28.inc.c
  91. +188
    -0
      actors/bowser/anims/anim_0604671C.inc.c
  92. +22
    -0
      actors/bowser/anims/anim_0604675C.inc.c
  93. +455
    -0
      actors/bowser/anims/anim_06048200.inc.c
  94. +389
    -0
      actors/bowser/anims/anim_06049880.inc.c
  95. +291
    -0
      actors/bowser/anims/anim_0604A8E4.inc.c
  96. +166
    -0
      actors/bowser/anims/anim_0604B178.inc.c
  97. +146
    -0
      actors/bowser/anims/anim_0604B8CC.inc.c
  98. +425
    -0
      actors/bowser/anims/anim_0604D184.inc.c
  99. +351
    -0
      actors/bowser/anims/anim_0604E5A0.inc.c
  100. +198
    -0
      actors/bowser/anims/anim_0604F030.inc.c

+ 27
- 0
CHANGES View File

@@ -1,3 +1,30 @@
Refresh #3
1.) Small bits of sound sample labelling
2.) Append 'b' to fopen calls in n64graphics to satisfy Windows
3.) Document synthesis.c and abi.h
4.) Remove gbi_old.h and use gbi.h instead for F3D_OLD
5.) Fix and change most values used by f3d commands
6.) Convert actors to C
7.) Make extract_assets.py fail on bad baserom
8.) Fix some (pragma-ignored) warnings
9.) Convert trig tables and data/ buffers into C
10.) Document intro behaviors and some of camera.c
11.) Match dma_sample_data
12.) Convert levels, bin, text, goddard_tex_dl to C
13.) Remove .bss size hardcoding
14.) Add mips64 fallback and alt dump option to diff.sh
15.) Convert behavior_data to C
16.) Get rid of the enum in behavior_data.
17.) Change more values used by f3d commands
18.) Document game/skybox.c
19.) Actors levels fixup
20.) Convert Mario animations to C (kind of)
22.) generate skybox data from 248x248 images
23.) 64-bit fixes
24.) Move demo data to C
25.) Change uintptr_t to GeoLayout for actors
26.) Move libc includes to include/libc/

Refresh #2a (hotfix)
Changes from Refresh #2:



+ 51
- 35
Makefile View File

@@ -125,14 +125,15 @@ LIBULTRA := $(BUILD_DIR)/libultra.a
ROM := $(BUILD_DIR)/$(TARGET).z64
ELF := $(BUILD_DIR)/$(TARGET).elf
LD_SCRIPT := sm64.ld
MIO0_DIR := $(BUILD_DIR)/mio0
MIO0_DIR := $(BUILD_DIR)/bin
SOUND_BIN_DIR := $(BUILD_DIR)/sound
TEXTURE_DIR := textures
ACTOR_DIR := actors
LEVEL_DIRS := $(patsubst levels/%,%,$(dir $(wildcard levels/*/header.h)))

# Directories containing source files
SRC_DIRS := src src/engine src/game src/audio src/menu src/buffers
ASM_DIRS := asm actors lib data levels assets sound text
SRC_DIRS := src src/engine src/game src/audio src/menu src/buffers actors levels text bin data assets
ASM_DIRS := asm lib sound
BIN_DIRS := bin bin/$(VERSION)

ULTRA_SRC_DIRS := lib/src lib/src/math
@@ -141,7 +142,6 @@ ULTRA_BIN_DIRS := lib/bin

GODDARD_SRC_DIRS := src/goddard src/goddard/dynlists

LEVEL_DIRS := $(patsubst levels/%,%,$(dir $(wildcard levels/*/header.s)))

MIPSISET := -mips2 -32

@@ -155,12 +155,13 @@ endif
include Makefile.split

# Source code files
C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
LEVEL_C_FILES := $(wildcard levels/*/leveldata.c) $(wildcard levels/*/script.c) $(wildcard levels/*/geo.c)
C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)) $(LEVEL_C_FILES)
S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s))
ULTRA_C_FILES := $(foreach dir,$(ULTRA_SRC_DIRS),$(wildcard $(dir)/*.c))
GODDARD_C_FILES := $(foreach dir,$(GODDARD_SRC_DIRS),$(wildcard $(dir)/*.c))
ULTRA_S_FILES := $(foreach dir,$(ULTRA_ASM_DIRS),$(wildcard $(dir)/*.s))
LEVEL_S_FILES := $(addsuffix header.s,$(addprefix bin/,$(LEVEL_DIRS)))
GENERATED_C_FILES := $(BUILD_DIR)/assets/mario_anim_data.c $(BUILD_DIR)/assets/demo_data.c

SOUND_BANK_FILES := $(wildcard sound/sound_banks/*.json)
SOUND_SEQUENCE_FILES := $(wildcard sound/sequences/$(VERSION)/*.m64) \
@@ -180,7 +181,7 @@ SOUND_OBJ_FILES := $(SOUND_BIN_DIR)/sound_data.ctl.o \
# Object files
O_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \
$(foreach file,$(S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \
$(foreach file,$(LEVEL_S_FILES),$(BUILD_DIR)/$(file:.s=.o))
$(foreach file,$(GENERATED_C_FILES),$(file:.c=.o))

ULTRA_O_FILES := $(foreach file,$(ULTRA_S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \
$(foreach file,$(ULTRA_C_FILES),$(BUILD_DIR)/$(file:.c=.o))
@@ -224,11 +225,13 @@ OBJDUMP := $(CROSS)objdump
OBJCOPY := $(CROSS)objcopy
PYTHON := python3

INCLUDE_CFLAGS := -I include -I include/libc -I $(BUILD_DIR) -I $(BUILD_DIR)/include -I src -I .

# Check code syntax with host compiler
CC_CHECK := gcc -fsyntax-only -fsigned-char -nostdinc -fno-builtin -I include -I $(BUILD_DIR)/include -I src -std=gnu90 -Wall -Wextra -Wno-format-security -D_LANGUAGE_C $(VERSION_CFLAGS) $(GRUCODE_CFLAGS)
CC_CHECK := gcc -fsyntax-only -fsigned-char -nostdinc -fno-builtin $(INCLUDE_CFLAGS) -std=gnu90 -Wall -Wextra -Wno-format-security -DNON_MATCHING $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -DTARGET_N64

ASFLAGS := -march=vr4300 -mabi=32 -I include -I $(BUILD_DIR) $(VERSION_ASFLAGS) $(GRUCODE_ASFLAGS)
CFLAGS = -Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm -Xfullwarn $(OPT_FLAGS) -signed -I include -I $(BUILD_DIR)/include -I src -D_LANGUAGE_C $(VERSION_CFLAGS) $(MIPSISET) $(GRUCODE_CFLAGS)
CFLAGS = -Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm -Xfullwarn $(OPT_FLAGS) -signed $(INCLUDE_CFLAGS) $(VERSION_CFLAGS) $(MIPSISET) $(GRUCODE_CFLAGS) -DTARGET_N64
OBJCOPYFLAGS := --pad-to=0x800000 --gap-fill=0xFF
SYMBOL_LINKING_FLAGS := $(addprefix -R ,$(SEG_FILES))
LDFLAGS := -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(SYMBOL_LINKING_FLAGS)
@@ -253,6 +256,8 @@ TEXTCONV = $(TOOLS_DIR)/textconv
IPLFONTUTIL = $(TOOLS_DIR)/iplfontutil
AIFF_EXTRACT_CODEBOOK = $(TOOLS_DIR)/aiff_extract_codebook
VADPCM_ENC = $(TOOLS_DIR)/vadpcm_enc
EXTRACT_DATA_FOR_MIO = $(TOOLS_DIR)/extract_data_for_mio
SKYCONV = $(TOOLS_DIR)/skyconv
EMULATOR = mupen64plus
EMU_FLAGS = --noosd
LOADER = loader64
@@ -301,21 +306,21 @@ $(BUILD_DIR)/include/text_strings.h: include/text_strings.h.in
$(BUILD_DIR)/include/text_menu_strings.h: include/text_menu_strings.h.in
$(TEXTCONV) charmap_menu.txt $< $@

$(BUILD_DIR)/text/%.s: text/$(VERSION)/%.s.in
$(BUILD_DIR)/text/%.inc.c: text/$(VERSION)/%.c.in
$(TEXTCONV) charmap.txt $< $@

ifeq ($(VERSION),eu)
ASM_DIRS += text/de text/en text/fr
SRC_DIRS += text/de text/en text/fr
# EU encoded text inserted into individual segment 0x19 files
$(BUILD_DIR)/bin/$(VERSION)/translation_de.o: $(BUILD_DIR)/text/de/dialog.s $(BUILD_DIR)/text/de/level.s $(BUILD_DIR)/text/de/star.s
$(BUILD_DIR)/bin/$(VERSION)/translation_en.o: $(BUILD_DIR)/text/en/dialog.s $(BUILD_DIR)/text/en/level.s $(BUILD_DIR)/text/en/star.s
$(BUILD_DIR)/bin/$(VERSION)/translation_fr.o: $(BUILD_DIR)/text/fr/dialog.s $(BUILD_DIR)/text/fr/level.s $(BUILD_DIR)/text/fr/star.s
$(BUILD_DIR)/bin/$(VERSION)/translation_de.o: $(BUILD_DIR)/text/de/dialog.inc.c $(BUILD_DIR)/text/de/level.inc.c $(BUILD_DIR)/text/de/star.inc.c
$(BUILD_DIR)/bin/$(VERSION)/translation_en.o: $(BUILD_DIR)/text/en/dialog.inc.c $(BUILD_DIR)/text/en/level.inc.c $(BUILD_DIR)/text/en/star.inc.c
$(BUILD_DIR)/bin/$(VERSION)/translation_fr.o: $(BUILD_DIR)/text/fr/dialog.inc.c $(BUILD_DIR)/text/fr/level.inc.c $(BUILD_DIR)/text/fr/star.inc.c
else
# non-EU encoded text inserted into segment 0x02
$(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/debug.s $(BUILD_DIR)/text/dialog.s $(BUILD_DIR)/text/level.s $(BUILD_DIR)/text/star.s
$(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/debug.inc.c $(BUILD_DIR)/text/dialog.inc.c $(BUILD_DIR)/text/level.inc.c $(BUILD_DIR)/text/star.inc.c
endif

ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS) $(GODDARD_SRC_DIRS) $(ULTRA_SRC_DIRS) $(ULTRA_ASM_DIRS) $(ULTRA_BIN_DIRS) $(BIN_DIRS) $(TEXTURE_DIRS) $(SOUND_SAMPLE_DIRS) $(addprefix levels/,$(LEVEL_DIRS)) $(addprefix bin/,$(LEVEL_DIRS)) include) $(MIO0_DIR) $(addprefix $(MIO0_DIR)/,$(LEVEL_DIRS)) $(addprefix $(MIO0_DIR)/,$(VERSION)) $(SOUND_BIN_DIR) $(SOUND_BIN_DIR)/sequences/$(VERSION)
ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS) $(GODDARD_SRC_DIRS) $(ULTRA_SRC_DIRS) $(ULTRA_ASM_DIRS) $(ULTRA_BIN_DIRS) $(BIN_DIRS) $(TEXTURE_DIRS) $(SOUND_SAMPLE_DIRS) $(addprefix levels/,$(LEVEL_DIRS)) include) $(MIO0_DIR) $(addprefix $(MIO0_DIR)/,$(VERSION)) $(SOUND_BIN_DIR) $(SOUND_BIN_DIR)/sequences/$(VERSION)

# Make sure build directory exists before compiling anything
DUMMY != mkdir -p $(ALL_DIRS)
@@ -333,6 +338,10 @@ $(BUILD_DIR)/src/game/ingame_menu.o: $(BUILD_DIR)/include/text_strings.h
$(BUILD_DIR)/%: %.png
$(N64GRAPHICS) -i $@ -g $< -f $(lastword $(subst ., ,$@))

$(BUILD_DIR)/%.inc.c: $(BUILD_DIR)/% %.png
hexdump -v -e '1/1 "0x%X,"' $< > $@
echo >> $@

# Color Index CI8
$(BUILD_DIR)/%.ci8: %.ci8.png
$(N64GRAPHICS_CI) -i $@ -g $< -f ci8
@@ -344,38 +353,35 @@ $(BUILD_DIR)/%.ci4: %.ci4.png
################################################################

# compressed segment generation
$(BUILD_DIR)/bin/%.o: bin/%.s
$(AS) $(ASFLAGS) --no-pad-sections -o $@ $<

# compressed segment generation (actors)
$(BUILD_DIR)/bin/%.o: actors/%.s
$(AS) $(ASFLAGS) --no-pad-sections -o $@ $<

$(BUILD_DIR)/bin/%/leveldata.o: levels/%/leveldata.s
$(AS) $(ASFLAGS) --no-pad-sections -o $@ $<

$(BUILD_DIR)/bin/%/header.o: levels/%/header.s $(MIO0_DIR)/%/leveldata.mio0 levels/%/script.s
$(AS) $(ASFLAGS) --no-pad-sections -o $@ $<

# TODO: ideally this would be `-Trodata-segment=0x07000000` but that doesn't set the address

$(BUILD_DIR)/bin/%.elf: $(BUILD_DIR)/bin/%.o
$(LD) -e 0 -Ttext=$(SEGMENT_ADDRESS) -Map $@.map -o $@ $<
$(BUILD_DIR)/actors/%.elf: $(BUILD_DIR)/actors/%.o
$(LD) -e 0 -Ttext=$(SEGMENT_ADDRESS) -Map $@.map -o $@ $<

# Override for level.elf, which otherwise matches the above pattern
.SECONDEXPANSION:
$(BUILD_DIR)/bin/%/leveldata.elf: $(BUILD_DIR)/bin/%/leveldata.o $(BUILD_DIR)/bin/$$(TEXTURE_BIN).elf
$(BUILD_DIR)/levels/%/leveldata.elf: $(BUILD_DIR)/levels/%/leveldata.o $(BUILD_DIR)/bin/$$(TEXTURE_BIN).elf
$(LD) -e 0 -Ttext=$(SEGMENT_ADDRESS) -Map $@.map --just-symbols=$(BUILD_DIR)/bin/$(TEXTURE_BIN).elf -o $@ $<

$(BUILD_DIR)/bin/%.bin: $(BUILD_DIR)/bin/%.elf
$(OBJCOPY) -j .rodata $< -O binary $@
$(EXTRACT_DATA_FOR_MIO) $< $@

$(MIO0_DIR)/%.mio0: $(BUILD_DIR)/bin/%.bin
$(BUILD_DIR)/actors/%.bin: $(BUILD_DIR)/actors/%.elf
$(EXTRACT_DATA_FOR_MIO) $< $@

$(BUILD_DIR)/levels/%/leveldata.bin: $(BUILD_DIR)/levels/%/leveldata.elf
$(EXTRACT_DATA_FOR_MIO) $< $@

$(BUILD_DIR)/%.mio0: $(BUILD_DIR)/%.bin
$(MIO0TOOL) $< $@

$(MIO0_DIR)/%.mio0.o: $(MIO0_DIR)/%.mio0.s
$(BUILD_DIR)/%.mio0.o: $(BUILD_DIR)/%.mio0.s
$(AS) $(ASFLAGS) -o $@ $<

$(MIO0_DIR)/%.mio0.s: $(MIO0_DIR)/%.mio0
$(BUILD_DIR)/%.mio0.s: $(BUILD_DIR)/%.mio0
printf ".section .data\n\n.incbin \"$<\"\n" > $@

$(BUILD_DIR)/%.table: %.aiff
@@ -405,6 +411,12 @@ $(SOUND_BIN_DIR)/%.o: $(SOUND_BIN_DIR)/%.s
$(SOUND_BIN_DIR)/%.s: $(SOUND_BIN_DIR)/%
printf ".section .data\n\n.incbin \"$<\"\n" > $@

$(BUILD_DIR)/assets/mario_anim_data.c: $(wildcard assets/anims/*.inc.c)
$(PYTHON) tools/mario_anims_converter.py > $@

$(BUILD_DIR)/assets/demo_data.c: assets/demo_data.json $(wildcard assets/demos/*.bin)
$(PYTHON) tools/demo_data_converter.py assets/demo_data.json $(VERSION_CFLAGS) > $@

# Source code
$(BUILD_DIR)/src/goddard/%.o: OPT_FLAGS := -g
$(BUILD_DIR)/src/goddard/%.o: MIPSISET := -mips1
@@ -442,7 +454,11 @@ $(BUILD_DIR)/%.o: %.c
$(CC) -c $(CFLAGS) -o $@ $<


$(BUILD_DIR)/%.o: %.s $(MIO0_FILES)
$(BUILD_DIR)/%.o: $(BUILD_DIR)/%.c
@$(CC_CHECK) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<
$(CC) -c $(CFLAGS) -o $@ $<

$(BUILD_DIR)/%.o: %.s
$(AS) $(ASFLAGS) -MD $(BUILD_DIR)/$*.d -o $@ $<

$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT)
@@ -467,7 +483,7 @@ $(BUILD_DIR)/$(TARGET).objdump: $(ELF)


.PHONY: all clean distclean default diff test load libultra
.PRECIOUS: $(MIO0_DIR)/%.mio0 $(MIO0_DIR)/%.mio0.s $(BUILD_DIR)/bin/%.elf $(SOUND_BIN_DIR)/%.ctl $(SOUND_BIN_DIR)/%.tbl $(SOUND_SAMPLE_TABLES) $(SOUND_BIN_DIR)/%.s
.PRECIOUS: $(BUILD_DIR)/bin/%.elf $(SOUND_BIN_DIR)/%.ctl $(SOUND_BIN_DIR)/%.tbl $(SOUND_SAMPLE_TABLES) $(SOUND_BIN_DIR)/%.s $(BUILD_DIR)/%
.DELETE_ON_ERROR:

# Remove built-in rules, to improve performance


+ 109
- 123
Makefile.split View File

@@ -2,8 +2,8 @@
# General Rules
# --------------------------------------

# obtain a list of segments from the *.s files in bin directory
SEGMENTS := $(notdir $(basename $(wildcard bin/*.s))) $(addprefix $(VERSION)/,$(notdir $(basename $(wildcard bin/$(VERSION)/*.s))))
# obtain a list of segments from the *.c files in bin directory
SEGMENTS := $(notdir $(basename $(wildcard bin/*.c))) $(addprefix $(VERSION)/,$(notdir $(basename $(wildcard bin/$(VERSION)/*.c)))) $(addsuffix _skybox,$(notdir $(basename $(wildcard textures/skyboxes/*.png))))
ACTORS := $(filter %/,$(wildcard actors/*/))
TEXTURE_DIRS := $(addprefix textures/,$(SEGMENTS)) $(ACTORS) textures/intro_raw

@@ -32,12 +32,12 @@ ACTOR_GROUPS := \
common1

LEVEL_FILES := $(addsuffix leveldata,$(LEVEL_DIRS))
MIO0_FILES := $(addprefix $(MIO0_DIR)/,$(addsuffix .mio0,$(SEGMENTS) $(ACTOR_GROUPS) $(LEVEL_FILES)))
MIO0_FILES := $(addprefix $(MIO0_DIR)/,$(addsuffix .mio0,$(SEGMENTS))) $(addprefix $(BUILD_DIR)/actors/,$(addsuffix .mio0,$(ACTOR_GROUPS))) $(addprefix $(BUILD_DIR)/levels/,$(addsuffix .mio0,$(LEVEL_FILES)))
MIO0_OBJ_FILES := $(MIO0_FILES:.mio0=.mio0.o)

SEGMENT_ELF_FILES := $(addprefix $(BUILD_DIR)/bin/,$(addsuffix .elf,$(SEGMENTS)))
ACTOR_ELF_FILES := $(addprefix $(BUILD_DIR)/bin/,$(addsuffix .elf,$(ACTOR_GROUPS)))
LEVEL_ELF_FILES := $(addprefix $(BUILD_DIR)/bin/,$(addsuffix .elf,$(LEVEL_FILES)))
ACTOR_ELF_FILES := $(addprefix $(BUILD_DIR)/actors/,$(addsuffix .elf,$(ACTOR_GROUPS)))
LEVEL_ELF_FILES := $(addprefix $(BUILD_DIR)/levels/,$(addsuffix .elf,$(LEVEL_FILES)))

# --------------------------------------
# Actor Rules
@@ -54,7 +54,7 @@ BOO_DIRS := bookend book chair small_key mad_piano boo haunted_cage
MR_I_DIRS := mr_i_eyeball mr_i_iris swoop snufit dorrie scuttlebug
HOOT_DIRS := yellow_sphere_small hoot yoshi_egg thwomp bullet_bill heave_ho
COINS_DIRS := mist explosion butterfly coin warp_pipe door bowser_key flame blue_fish pebble leaves warp_collision mario_cap power_meter mushroom_1up star sand dirt transparent_star white_particle wooden_signpost tree
BUBBA_DIRS := bubba wiggler lakitu_enemy spiny_egg spiny
BUBBA_DIRS := bubba wiggler wiggler_body_part lakitu_enemy spiny_egg spiny
SKEETER_DIRS := skeeter seaweed water_mine cyan_fish bub water_ring treasure_chest
KLEPTO_DIRS := klepto eyerok pokey tornado
SEA_DIRS := clam_shell manta sushi unagi whirlpool
@@ -66,70 +66,70 @@ BOWSER_DIRS := bowser_flame impact_ring yellow_sphere bowser bomb impact_sm
MARIO_DIRS := mario bubble walk_smoke burn_smoke stomp_smoke water_waves sparkle water_splash white_particle_small sparkle_animation

# Actor Files
AMP_CHUCKYA_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(AMP_DIRS)),$(basename $(wildcard $(dir)/*.png)))
BOBOMBS_BUBBLE_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(KING_BOBOMB_DIRS)),$(basename $(wildcard $(dir)/*.png)))
BOO_BOOKEND_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BOO_DIRS)),$(basename $(wildcard $(dir)/*.png)))
CAPSWITCH_SPRINGBOARD_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(CAPSWITCH_DIRS)),$(basename $(wildcard $(dir)/*.png)))
COINS_PIPE_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(COINS_DIRS)),$(basename $(wildcard $(dir)/*.png)))
BOWSER_FLAMES_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BOWSER_DIRS)),$(basename $(wildcard $(dir)/*.png)))
BUBBA_WIGGLER_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BUBBA_DIRS)),$(basename $(wildcard $(dir)/*.png)))
BULLY_BLARGG_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BULLY_DIRS)),$(basename $(wildcard $(dir)/*.png)))
CHILLYCHIEF_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(CHILLYCHIEF_DIRS)),$(basename $(wildcard $(dir)/*.png)))
HOOT_THWOMP_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(HOOT_DIRS)),$(basename $(wildcard $(dir)/*.png)))
KOOPA_LOG_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(KOOPA_DIRS)),$(basename $(wildcard $(dir)/*.png)))
KLEPTO_EYEROK_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(KLEPTO_DIRS)),$(basename $(wildcard $(dir)/*.png)))
LAKITU_TOAD_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(LAKITU_DIRS)),$(basename $(wildcard $(dir)/*.png)))
MARIO_WATER_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(MARIO_DIRS)),$(basename $(wildcard $(dir)/*.png)))
MOLE_UKIKI_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(MOLE_DIRS)),$(basename $(wildcard $(dir)/*.png)))
MR_I_SWOOP_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(MR_I_DIRS)),$(basename $(wildcard $(dir)/*.png)))
PEACH_TOADSTOOL_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(PEACH_DIRS)),$(basename $(wildcard $(dir)/*.png)))
SEA_CREATURES_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(SEA_DIRS)),$(basename $(wildcard $(dir)/*.png)))
SKEETER_FISH_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(SKEETER_DIRS)),$(basename $(wildcard $(dir)/*.png)))
SPINDRIFT_PENGUIN_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(SPINDRIFT_DIRS)),$(basename $(wildcard $(dir)/*.png)))
AMP_CHUCKYA_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(AMP_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
BOBOMBS_BUBBLE_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(KING_BOBOMB_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
BOO_BOOKEND_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BOO_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
CAPSWITCH_SPRINGBOARD_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(CAPSWITCH_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
COINS_PIPE_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(COINS_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
BOWSER_FLAMES_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BOWSER_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
BUBBA_WIGGLER_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BUBBA_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
BULLY_BLARGG_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BULLY_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
CHILLYCHIEF_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(CHILLYCHIEF_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
HOOT_THWOMP_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(HOOT_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
KOOPA_LOG_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(KOOPA_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
KLEPTO_EYEROK_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(KLEPTO_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
LAKITU_TOAD_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(LAKITU_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
MARIO_WATER_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(MARIO_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
MOLE_UKIKI_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(MOLE_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
MR_I_SWOOP_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(MR_I_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
PEACH_TOADSTOOL_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(PEACH_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
SEA_CREATURES_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(SEA_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
SKEETER_FISH_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(SKEETER_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))
SPINDRIFT_PENGUIN_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(SPINDRIFT_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png)))

# Actor dependencies
$(BUILD_DIR)/bin/group0.o: $(addprefix $(BUILD_DIR)/,$(MARIO_WATER_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(MARIO_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group1.o: $(addprefix $(BUILD_DIR)/,$(HOOT_THWOMP_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(HOOT_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group2.o: $(addprefix $(BUILD_DIR)/,$(BULLY_BLARGG_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BULLY_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group3.o: $(addprefix $(BUILD_DIR)/,$(BOBOMBS_BUBBLE_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(KING_BOBOMB_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group4.o: $(addprefix $(BUILD_DIR)/,$(SEA_CREATURES_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(SEA_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group5.o: $(addprefix $(BUILD_DIR)/,$(KLEPTO_EYEROK_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(KLEPTO_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group6.o: $(addprefix $(BUILD_DIR)/,$(MOLE_UKIKI_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(MOLE_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group7.o: $(addprefix $(BUILD_DIR)/,$(SPINDRIFT_PENGUIN_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(SPINDRIFT_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group8.o: $(addprefix $(BUILD_DIR)/,$(CAPSWITCH_SPRINGBOARD_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(CAPSWITCH_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group9.o: $(addprefix $(BUILD_DIR)/,$(BOO_BOOKEND_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BOO_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group10.o: $(addprefix $(BUILD_DIR)/,$(PEACH_TOADSTOOL_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(PEACH_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group11.o: $(addprefix $(BUILD_DIR)/,$(BUBBA_WIGGLER_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BUBBA_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group12.o: $(addprefix $(BUILD_DIR)/,$(BOWSER_FLAMES_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BOWSER_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group13.o: $(addprefix $(BUILD_DIR)/,$(SKEETER_FISH_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(SKEETER_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group14.o: $(addprefix $(BUILD_DIR)/,$(KOOPA_LOG_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(KOOPA_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group15.o: $(addprefix $(BUILD_DIR)/,$(LAKITU_TOAD_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(LAKITU_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group16.o: $(addprefix $(BUILD_DIR)/,$(CHILLYCHIEF_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(CHILLYCHIEF_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/group17.o: $(addprefix $(BUILD_DIR)/,$(MR_I_SWOOP_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(MR_I_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/common0.o: $(addprefix $(BUILD_DIR)/,$(AMP_CHUCKYA_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(AMP_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/bin/common1.o: $(addprefix $(BUILD_DIR)/,$(COINS_PIPE_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(COINS_DIRS)),$(wildcard $(dir)/*.s))
$(BUILD_DIR)/actors/group0.o: $(addprefix $(BUILD_DIR)/,$(MARIO_WATER_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(MARIO_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group1.o: $(addprefix $(BUILD_DIR)/,$(HOOT_THWOMP_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(HOOT_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group2.o: $(addprefix $(BUILD_DIR)/,$(BULLY_BLARGG_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BULLY_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group3.o: $(addprefix $(BUILD_DIR)/,$(BOBOMBS_BUBBLE_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(KING_BOBOMB_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group4.o: $(addprefix $(BUILD_DIR)/,$(SEA_CREATURES_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(SEA_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group5.o: $(addprefix $(BUILD_DIR)/,$(KLEPTO_EYEROK_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(KLEPTO_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group6.o: $(addprefix $(BUILD_DIR)/,$(MOLE_UKIKI_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(MOLE_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group7.o: $(addprefix $(BUILD_DIR)/,$(SPINDRIFT_PENGUIN_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(SPINDRIFT_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group8.o: $(addprefix $(BUILD_DIR)/,$(CAPSWITCH_SPRINGBOARD_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(CAPSWITCH_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group9.o: $(addprefix $(BUILD_DIR)/,$(BOO_BOOKEND_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BOO_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group10.o: $(addprefix $(BUILD_DIR)/,$(PEACH_TOADSTOOL_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(PEACH_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group11.o: $(addprefix $(BUILD_DIR)/,$(BUBBA_WIGGLER_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BUBBA_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group12.o: $(addprefix $(BUILD_DIR)/,$(BOWSER_FLAMES_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(BOWSER_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group13.o: $(addprefix $(BUILD_DIR)/,$(SKEETER_FISH_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(SKEETER_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group14.o: $(addprefix $(BUILD_DIR)/,$(KOOPA_LOG_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(KOOPA_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group15.o: $(addprefix $(BUILD_DIR)/,$(LAKITU_TOAD_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(LAKITU_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group16.o: $(addprefix $(BUILD_DIR)/,$(CHILLYCHIEF_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(CHILLYCHIEF_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/group17.o: $(addprefix $(BUILD_DIR)/,$(MR_I_SWOOP_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(MR_I_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/common0.o: $(addprefix $(BUILD_DIR)/,$(AMP_CHUCKYA_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(AMP_DIRS)),$(wildcard $(dir)/*.c))
$(BUILD_DIR)/actors/common1.o: $(addprefix $(BUILD_DIR)/,$(COINS_PIPE_FILES)) $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(COINS_DIRS)),$(wildcard $(dir)/*.c))

# Actor Elf Files
$(BUILD_DIR)/bin/group0.elf: SEGMENT_ADDRESS := 0x04000000
$(BUILD_DIR)/bin/group1.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/bin/group2.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/bin/group3.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/bin/group4.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/bin/group5.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/bin/group6.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/bin/group7.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/bin/group8.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/bin/group9.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/bin/group10.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/bin/group11.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/bin/group12.elf: SEGMENT_ADDRESS := 0x06000000
$(BUILD_DIR)/bin/group13.elf: SEGMENT_ADDRESS := 0x06000000
$(BUILD_DIR)/bin/group14.elf: SEGMENT_ADDRESS := 0x06000000
$(BUILD_DIR)/bin/group15.elf: SEGMENT_ADDRESS := 0x06000000
$(BUILD_DIR)/bin/group16.elf: SEGMENT_ADDRESS := 0x06000000
$(BUILD_DIR)/bin/group17.elf: SEGMENT_ADDRESS := 0x06000000
$(BUILD_DIR)/bin/common0.elf: SEGMENT_ADDRESS := 0x08000000
$(BUILD_DIR)/bin/common1.elf: SEGMENT_ADDRESS := 0x03000000
$(BUILD_DIR)/actors/group0.elf: SEGMENT_ADDRESS := 0x04000000
$(BUILD_DIR)/actors/group1.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/actors/group2.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/actors/group3.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/actors/group4.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/actors/group5.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/actors/group6.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/actors/group7.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/actors/group8.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/actors/group9.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/actors/group10.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/actors/group11.elf: SEGMENT_ADDRESS := 0x05000000
$(BUILD_DIR)/actors/group12.elf: SEGMENT_ADDRESS := 0x06000000
$(BUILD_DIR)/actors/group13.elf: SEGMENT_ADDRESS := 0x06000000
$(BUILD_DIR)/actors/group14.elf: SEGMENT_ADDRESS := 0x06000000
$(BUILD_DIR)/actors/group15.elf: SEGMENT_ADDRESS := 0x06000000
$(BUILD_DIR)/actors/group16.elf: SEGMENT_ADDRESS := 0x06000000
$(BUILD_DIR)/actors/group17.elf: SEGMENT_ADDRESS := 0x06000000
$(BUILD_DIR)/actors/common0.elf: SEGMENT_ADDRESS := 0x08000000
$(BUILD_DIR)/actors/common1.elf: SEGMENT_ADDRESS := 0x03000000

# --------------------------------------
# Level Rules
@@ -141,11 +141,10 @@ $(BUILD_DIR)/bin/common1.elf: SEGMENT_ADDRESS := 0x03000000
# TODO: Generate these rules from the level configs?

define level_rules =
$(1)_SEG7_FILES := $$(basename $$(notdir $$(wildcard levels/$(1)/*.png)))
$(1)_SEG7_FILES_RAW := $(shell find levels/$(1)/ -type f -iname '*')
$$(BUILD_DIR)/bin/$(1)/leveldata.o: $$(addprefix $$(BUILD_DIR)/levels/$(1)/,$$($(1)_SEG7_FILES)) $$($(1)_SEG7_FILES_RAW)
$$(BUILD_DIR)/bin/$(1)/leveldata.elf: SEGMENT_ADDRESS := $(2)
$$(BUILD_DIR)/bin/$(1)/leveldata.elf: TEXTURE_BIN := $(3)
$(1)_SEG7_FILES := $$(patsubst %.png,%.inc.c,$$(notdir $$(wildcard levels/$(1)/*.png)))
$$(BUILD_DIR)/levels/$(1)/leveldata.o: $$(addprefix $$(BUILD_DIR)/levels/$(1)/,$$($(1)_SEG7_FILES))
$$(BUILD_DIR)/levels/$(1)/leveldata.elf: SEGMENT_ADDRESS := $(2)
$$(BUILD_DIR)/levels/$(1)/leveldata.elf: TEXTURE_BIN := $(3)
endef

$(eval $(call level_rules,bbh,0x07000000,spooky)) # BBH (Big Boo's Haunt)
@@ -169,7 +168,6 @@ $(eval $(call level_rules,bits,0x07000000,sky)) # BITS (Bowser in the Sky)
$(eval $(call level_rules,lll,0x07000000,fire)) # LLL (Lethal Lava Land)
$(eval $(call level_rules,ddd,0x07000000,water)) # DDD (Dire Dire Docks)
$(eval $(call level_rules,wf,0x07000000,grass)) # WF (Whomp's Fortress)
$(eval $(call level_rules,ending,0x07000000,generic)) # Ending
$(eval $(call level_rules,castle_courtyard,0x07000000,outside)) # Castle Courtyard (The Courtyard of Princess Peach's Castle)
$(eval $(call level_rules,pss,0x07000000,mountain)) # PSS (The Princess's Secret Slide)
$(eval $(call level_rules,cotmc,0x07000000,cave)) # COTMC (Cavern of the Metal Cap)
@@ -183,26 +181,45 @@ $(eval $(call level_rules,ttm,0x07000000,mountain)) # TTM (Tall Tall Mountain)
$(eval $(call level_rules,intro,0x07000000,generic)) # Intro (Super Mario 64 Logo)
$(eval $(call level_rules,menu,0x07000000,generic)) # Menu (File Select)

# Ending cake texture override
ifeq ($(VERSION),eu)
ending_SEG7_FILES := $(patsubst %.png,%.inc.c,$(notdir $(wildcard levels/ending/eu*.png levels/ending/*eu.png)))
$(BUILD_DIR)/levels/ending/leveldata.o: $(addprefix $(BUILD_DIR)/levels/ending/,$(ending_SEG7_FILES))
$(BUILD_DIR)/levels/ending/leveldata.elf: SEGMENT_ADDRESS := 0x07000000
$(BUILD_DIR)/levels/ending/leveldata.elf: TEXTURE_BIN := generic

$(BUILD_DIR)/levels/ending/cake_eu.inc.c: levels/ending/cake_eu.png
$(SKYCONV) --type cake-eu --split $^ $(BUILD_DIR)/levels/ending
else
ending_SEG7_FILES := cake.inc.c
$(BUILD_DIR)/levels/ending/leveldata.o: $(BUILD_DIR)/levels/ending/cake.inc.c
$(BUILD_DIR)/levels/ending/leveldata.elf: SEGMENT_ADDRESS := 0x07000000
$(BUILD_DIR)/levels/ending/leveldata.elf: TEXTURE_BIN := generic

$(BUILD_DIR)/levels/ending/cake.inc.c: levels/ending/cake.png
$(SKYCONV) --type cake --split $^ $(BUILD_DIR)/levels/ending
endif

# --------------------------------------
# Texture Bin Rules
# --------------------------------------

# Others
SEGMENT2_FILES := $(basename $(wildcard $(TEXTURE_DIR)/segment2/*.png))
TITLE_SCREEN_BG_FILES := $(basename $(wildcard $(TEXTURE_DIR)/title_screen_bg/*.png))
SPOOKY_FILES := $(basename $(wildcard $(TEXTURE_DIR)/spooky/*.png))
GENERIC_FILES := $(basename $(wildcard $(TEXTURE_DIR)/generic/*.png))
OUTSIDE_FILES := $(basename $(wildcard $(TEXTURE_DIR)/outside/*.png))
SNOW_FILES := $(basename $(wildcard $(TEXTURE_DIR)/snow/*.png))
EFFECT_FILES := $(basename $(wildcard $(TEXTURE_DIR)/effect/*.png))
CAVE_FILES := $(basename $(wildcard $(TEXTURE_DIR)/cave/*.png))
INSIDE_FILES := $(basename $(wildcard $(TEXTURE_DIR)/inside/*.png))
WATER_FILES := $(basename $(wildcard $(TEXTURE_DIR)/water/*.png))
FIRE_TEXTURES_FILES := $(basename $(wildcard $(TEXTURE_DIR)/fire/*.png))
SKY_FILES := $(basename $(wildcard $(TEXTURE_DIR)/sky/*.png))
MACHINE_FILES := $(basename $(wildcard $(TEXTURE_DIR)/machine/*.png))
MOUNTAIN_FILES := $(basename $(wildcard $(TEXTURE_DIR)/mountain/*.png))
GRASS_FILES := $(basename $(wildcard $(TEXTURE_DIR)/grass/*.png))
SEGMENT2_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/segment2/*.png))
TITLE_SCREEN_BG_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/title_screen_bg/*.png))
SPOOKY_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/spooky/*.png))
GENERIC_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/generic/*.png))
OUTSIDE_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/outside/*.png))
SNOW_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/snow/*.png))
EFFECT_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/effect/*.png))
CAVE_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/cave/*.png))
INSIDE_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/inside/*.png))
WATER_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/water/*.png))
FIRE_TEXTURES_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/fire/*.png))
SKY_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/sky/*.png))
MACHINE_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/machine/*.png))
MOUNTAIN_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/mountain/*.png))
GRASS_FILES := $(patsubst %.png,%.inc.c,$(wildcard $(TEXTURE_DIR)/grass/*.png))

# Texture Files
$(BUILD_DIR)/bin/segment2.o: $(addprefix $(BUILD_DIR)/,$(SEGMENT2_FILES))
@@ -248,46 +265,15 @@ $(BUILD_DIR)/bin/$(VERSION)/translation_fr.elf: SEGMENT_ADDRESS := 0x19000000
# Skybox Rules
# --------------------------------------

# Skybox Files
BBH_SKYBOX_FILES := $(basename $(wildcard $(TEXTURE_DIR)/bbh_skybox/*.png))
BIDW_SKYBOX_FILES := $(basename $(wildcard $(TEXTURE_DIR)/bidw_skybox/*.png))
BITFS_SKYBOX_FILES := $(basename $(wildcard $(TEXTURE_DIR)/bitfs_skybox/*.png))
BITS_SKYBOX_FILES := $(basename $(wildcard $(TEXTURE_DIR)/bits_skybox/*.png))
CCM_SKYBOX_FILES := $(basename $(wildcard $(TEXTURE_DIR)/ccm_skybox/*.png))
CLOUD_FLOOR_SKYBOX_FILES := $(basename $(wildcard $(TEXTURE_DIR)/cloud_floor_skybox/*.png))
CLOUDS_SKYBOX_FILES := $(basename $(wildcard $(TEXTURE_DIR)/clouds_skybox/*.png))
SSL_SKYBOX_FILES := $(basename $(wildcard $(TEXTURE_DIR)/ssl_skybox/*.png))
WATER_SKYBOX_FILES := $(basename $(wildcard $(TEXTURE_DIR)/water_skybox/*.png))
WDW_SKYBOX_FILES := $(basename $(wildcard $(TEXTURE_DIR)/wdw_skybox/*.png))

# Skybox Files
$(BUILD_DIR)/bin/bbh_skybox.o: $(addprefix $(BUILD_DIR)/,$(BBH_SKYBOX_FILES))
$(BUILD_DIR)/bin/bidw_skybox.o: $(addprefix $(BUILD_DIR)/,$(BIDW_SKYBOX_FILES))
$(BUILD_DIR)/bin/bitfs_skybox.o: $(addprefix $(BUILD_DIR)/,$(BITFS_SKYBOX_FILES))
$(BUILD_DIR)/bin/bits_skybox.o: $(addprefix $(BUILD_DIR)/,$(BITS_SKYBOX_FILES))
$(BUILD_DIR)/bin/ccm_skybox.o: $(addprefix $(BUILD_DIR)/,$(CCM_SKYBOX_FILES))
$(BUILD_DIR)/bin/cloud_floor_skybox.o: $(addprefix $(BUILD_DIR)/,$(CLOUD_FLOOR_SKYBOX_FILES))
$(BUILD_DIR)/bin/clouds_skybox.o: $(addprefix $(BUILD_DIR)/,$(CLOUDS_SKYBOX_FILES))
$(BUILD_DIR)/bin/ssl_skybox.o: $(addprefix $(BUILD_DIR)/,$(SSL_SKYBOX_FILES))
$(BUILD_DIR)/bin/water_skybox.o: $(addprefix $(BUILD_DIR)/,$(WATER_SKYBOX_FILES))
$(BUILD_DIR)/bin/wdw_skybox.o: $(addprefix $(BUILD_DIR)/,$(WDW_SKYBOX_FILES))
$(BUILD_DIR)/bin/%_skybox.c: textures/skyboxes/%.png
$(SKYCONV) --type sky --split $^ $(BUILD_DIR)/bin

# Skybox Files
$(BUILD_DIR)/bin/bbh_skybox.elf: SEGMENT_ADDRESS := 0x0A000000
$(BUILD_DIR)/bin/bidw_skybox.elf: SEGMENT_ADDRESS := 0x0A000000
$(BUILD_DIR)/bin/bitfs_skybox.elf: SEGMENT_ADDRESS := 0x0A000000
$(BUILD_DIR)/bin/bits_skybox.elf: SEGMENT_ADDRESS := 0x0A000000
$(BUILD_DIR)/bin/ccm_skybox.elf: SEGMENT_ADDRESS := 0x0A000000
$(BUILD_DIR)/bin/cloud_floor_skybox.elf: SEGMENT_ADDRESS := 0x0A000000
$(BUILD_DIR)/bin/clouds_skybox.elf: SEGMENT_ADDRESS := 0x0A000000
$(BUILD_DIR)/bin/ssl_skybox.elf: SEGMENT_ADDRESS := 0x0A000000
$(BUILD_DIR)/bin/water_skybox.elf: SEGMENT_ADDRESS := 0x0A000000
$(BUILD_DIR)/bin/wdw_skybox.elf: SEGMENT_ADDRESS := 0x0A000000
$(BUILD_DIR)/bin/%_skybox.elf: SEGMENT_ADDRESS := 0x0A000000

# --------------------------------------
# Misc Rules
# --------------------------------------

# intro_raw textures are not compressed
INTRO_RAW_FILES := $(basename $(notdir $(wildcard $(TEXTURE_DIR)/intro_raw/*.png)))
$(BUILD_DIR)/data/goddard_tex_dl.o: $(addprefix $(BUILD_DIR)/textures/intro_raw/,$(INTRO_RAW_FILES))
INTRO_RAW_FILES := $(wildcard $(TEXTURE_DIR)/intro_raw/*.png)
$(BUILD_DIR)/src/goddard/renderer.o: $(addprefix $(BUILD_DIR)/,$(patsubst %.png,%.inc.c,$(INTRO_RAW_FILES)))

+ 1
- 1
README.md View File

@@ -79,7 +79,7 @@ The recommended path is installing a Linux distribution under a VM.
```
sm64
├── actors: object behaviors, geo layout, and display lists
├── asm: handwritten assembly code
├── asm: handwritten assembly code, rom header
│   └── non_matchings: asm for non-matching sections
├── assets: animation and demo data
│   ├── anims: animation data


+ 54
- 0
actors/amp/anims/anim_0800401C.inc.c View File

@@ -0,0 +1,54 @@
// 0x08003E30
static const s16 amp_seg8_animvalue_08003E30[] = {
0x0000, 0x0000, 0x0D79, 0x1AF2, 0x286B, 0x35E4, 0x435D, 0x50D6,
0x5E50, 0x6BC9, 0x7942, 0x86BE, 0x9437, 0xA1B0, 0xAF2A, 0xBCA3,
0xCA1C, 0xD795, 0xE50E, 0xF287, 0x1872, 0x0000, 0x1AF2, 0x35E4,
0x50D6, 0x6BC9, 0x86BE, 0xA1B0, 0xBCA3, 0xD795, 0xF287, 0x0D79,
0x286B, 0x435D, 0x5E50, 0x7942, 0x9437, 0xAF2A, 0xCA1C, 0xE50E,
0x0000, 0x1AF2, 0x35E4, 0x50D6, 0x6BC9, 0x86BE, 0xA1B0, 0xBCA3,
0xD795, 0xF287, 0x0D79, 0x286B, 0x435D, 0x5E50, 0x7942, 0x9437,
0xAF2A, 0xCA1C, 0xE50E, 0x8001, 0x5793, 0x2F28, 0x06BC, 0xDE52,
0xB5E6, 0x8D7B, 0x650C, 0x3CA1, 0x1435, 0xEBCB, 0xC35F, 0x9AF4,
0x7285, 0x4A1A, 0x21AE, 0xF944, 0xD0D8, 0xA86D, 0x3FFF, 0x0000,
0x0D7C, 0x1AF9, 0x2876, 0x35F3, 0x4370, 0x50ED, 0x5E6A, 0x6BE7,
0x7964, 0x86E3, 0x9460, 0xA1DD, 0xAF5A, 0xBCD7, 0xCA54, 0xD7D1,
0xE54E, 0xF2CB, 0xC001, 0x3FFF, 0x0000, 0x0D7B, 0x1AF7, 0x2873,
0x35EF, 0x436B, 0x50E6, 0x5E62, 0x6BDE, 0x795A, 0x86D9, 0x9455,
0xA1D0, 0xAF4C, 0xBCC8, 0xCA44, 0xD7C0, 0xE53B, 0xF2B7, 0xC001,
0x3FFF, 0xC001, 0xCD7A, 0xDAF2, 0xE86B, 0xF5E3, 0x035B, 0x10D3,
0x1E4C, 0x2BC4, 0x393D, 0x46B5, 0x542E, 0x61A6, 0x6F1F, 0x7C97,
0x8A13, 0x978B, 0xA504, 0xB27D, 0xC001, 0x3FFF, 0x4D79, 0x5AF2,
0x686C, 0x75E5, 0x8362, 0x90DB, 0x9E55, 0xABCF, 0xB948, 0xC6C2,
0xD43B, 0xE1B5, 0xEF2F, 0xFCA8, 0x0A21, 0x179A, 0x2514, 0x328D,
0xC001, 0x3FFF,
};

// 0x08003F74
static const u16 amp_seg8_animindex_08003F74[] = {
0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00A1,
0x0001, 0x0000, 0x0013, 0x008D, 0x0001, 0x00A0,
0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0001,
0x0001, 0x0000, 0x0013, 0x0079, 0x0001, 0x008C,
0x0001, 0x0014, 0x0001, 0x0000, 0x0013, 0x0015,
0x0001, 0x0000, 0x0013, 0x0064, 0x0001, 0x0077,
0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0028,
0x0001, 0x0000, 0x0013, 0x004F, 0x0001, 0x0062,
0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x003B,
0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0078,
0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0063,
0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x004E,
};

// 0x0800401C
static const struct Animation amp_seg8_anim_0800401C = {
0,
0,
0,
0,
0x13,
ANIMINDEX_NUMPARTS(amp_seg8_animindex_08003F74),
amp_seg8_animvalue_08003E30,
amp_seg8_animindex_08003F74,
0,
};

+ 1
- 0
actors/amp/anims/data.inc.c View File

@@ -0,0 +1 @@
#include "anim_0800401C.inc.c"

+ 4
- 0
actors/amp/anims/table.inc.c View File

@@ -0,0 +1,4 @@
// 0x08004034
const struct Animation *const amp_seg8_anims_08004034[] = {
&amp_seg8_anim_0800401C,
};

+ 0
- 2
actors/amp/collision.s View File

@@ -1,2 +0,0 @@
# Amp


+ 56
- 0
actors/amp/geo.inc.c View File

@@ -0,0 +1,56 @@
// 0x0F000028
const GeoLayout amp_geo[] = {
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 100),
GEO_OPEN_NODE(),
GEO_SCALE(0x00, 16384),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002C88),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(2, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002BA0),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(2, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002BA0),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(2, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002BA0),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(2, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002BA0),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002D70),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_BILLBOARD(),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, amp_seg8_dl_08002E58),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
};

+ 0
- 54
actors/amp/geo.s View File

@@ -1,54 +0,0 @@
glabel amp_geo # 0x0F000028
geo_shadow SHADOW_CIRCLE_4_VERTS, 0xC8, 100
geo_open_node
geo_scale 0x00, 16384
geo_open_node
geo_animated_part LAYER_OPAQUE, 0, 0, 0
geo_open_node
geo_animated_part LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002C88
geo_open_node
geo_animated_part LAYER_OPAQUE, 0, 0, 0
geo_open_node
geo_switch_case 2, geo_switch_anim_state
geo_open_node
geo_animated_part LAYER_OPAQUE, 0, 0, 0
geo_animated_part LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002BA0
geo_close_node
geo_close_node
geo_animated_part LAYER_OPAQUE, 0, 0, 0
geo_open_node
geo_switch_case 2, geo_switch_anim_state
geo_open_node
geo_animated_part LAYER_OPAQUE, 0, 0, 0
geo_animated_part LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002BA0
geo_close_node
geo_close_node
geo_animated_part LAYER_OPAQUE, 0, 0, 0
geo_open_node
geo_switch_case 2, geo_switch_anim_state
geo_open_node
geo_animated_part LAYER_OPAQUE, 0, 0, 0
geo_animated_part LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002BA0
geo_close_node
geo_close_node
geo_animated_part LAYER_OPAQUE, 0, 0, 0
geo_open_node
geo_switch_case 2, geo_switch_anim_state
geo_open_node
geo_animated_part LAYER_OPAQUE, 0, 0, 0
geo_animated_part LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002BA0
geo_close_node
geo_close_node
geo_close_node
geo_animated_part LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002D70
geo_animated_part LAYER_OPAQUE, 0, 0, 0
geo_open_node
geo_billboard
geo_open_node
geo_display_list LAYER_ALPHA, amp_seg8_dl_08002E58
geo_close_node
geo_close_node
geo_close_node
geo_close_node
geo_close_node
geo_end

+ 534
- 0
actors/amp/model.inc.c View File

@@ -0,0 +1,534 @@
// Amp

// 0x08000F18
ALIGNED8 static const u8 amp_seg8_texture_08000F18[] = {
#include "actors/amp/amp_electricity.rgba16.inc.c"
};

// 0x08001318
ALIGNED8 static const u8 amp_seg8_texture_08001318[] = {
#include "actors/amp/amp_eyes.rgba16.inc.c"
};

// 0x08001B18
ALIGNED8 static const u8 amp_seg8_texture_08001B18[] = {
#include "actors/amp/amp_body.rgba16.inc.c"
};

// 0x08002318
ALIGNED8 static const u8 amp_seg8_texture_08002318[] = {
#include "actors/amp/amp_mouth.rgba16.inc.c"
};

// 0x08002B18
static const Vtx amp_seg8_vertex_08002B18[] = {
{{{ 224, 0, -89}, 0, { 0, 480}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 187, 149, 0}, 0, { 223, 1078}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 224, 0, 90}, 0, { 479, 478}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 187, -148, 0}, 0, { 224, -122}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 224, 0, -89}, 0, { 0, 478}, {0xff, 0xff, 0xff, 0xff}}},
};

// 0x08002B68 - 0x08002BA0
const Gfx amp_seg8_dl_08002B68[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, amp_seg8_texture_08000F18),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
gsSPVertex(amp_seg8_vertex_08002B18, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSPEndDisplayList(),
};

// 0x08002BA0 - 0x08002C10
const Gfx amp_seg8_dl_08002BA0[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
gsSPDisplayList(amp_seg8_dl_08002B68),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),
gsSPEndDisplayList(),
};

// 0x08002C10
static const Vtx amp_seg8_vertex_08002C10[] = {
{{{ 68, 72, 158}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ -27, -71, 164}, 0, { 990, 990}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 68, -71, 158}, 0, { 990, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ -27, 72, 164}, 0, { 0, 990}, {0xff, 0xff, 0xff, 0xff}}},
};

// 0x08002C50 - 0x08002C88
const Gfx amp_seg8_dl_08002C50[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, amp_seg8_texture_08001318),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPVertex(amp_seg8_vertex_08002C10, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
};

// 0x08002C88 - 0x08002CF8
const Gfx amp_seg8_dl_08002C88[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
gsSPClearGeometryMode(G_LIGHTING),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
gsSPDisplayList(amp_seg8_dl_08002C50),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPSetGeometryMode(G_LIGHTING),
gsSPEndDisplayList(),
};

// 0x08002CF8
static const Vtx amp_seg8_vertex_08002CF8[] = {
{{{ -29, 72, 164}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ -124, -71, 121}, 0, { 990, 990}, {0xff, 0xff, 0xff, 0xff}}},
{{{ -29, -71, 164}, 0, { 990, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ -124, 72, 121}, 0, { 0, 990}, {0xff, 0xff, 0xff, 0xff}}},
};

// 0x08002D38 - 0x08002D70
const Gfx amp_seg8_dl_08002D38[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, amp_seg8_texture_08002318),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPVertex(amp_seg8_vertex_08002CF8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
};

// 0x08002D70 - 0x08002DE0
const Gfx amp_seg8_dl_08002D70[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
gsSPClearGeometryMode(G_LIGHTING),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
gsSPDisplayList(amp_seg8_dl_08002D38),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPSetGeometryMode(G_LIGHTING),
gsSPEndDisplayList(),
};

// 0x08002DE0
static const Vtx amp_seg8_vertex_08002DE0[] = {
{{{ -39, -39, 0}, 0, { 0, 990}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 40, 40, 0}, 0, { 990, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ -39, 40, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 40, -39, 0}, 0, { 990, 990}, {0xff, 0xff, 0xff, 0xff}}},
};

// 0x08002E20 - 0x08002E58
const Gfx amp_seg8_dl_08002E20[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, amp_seg8_texture_08001B18),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPVertex(amp_seg8_vertex_08002DE0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
};

// 0x08002E58 - 0x08002EC8
const Gfx amp_seg8_dl_08002E58[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
gsSPClearGeometryMode(G_LIGHTING),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
gsSPDisplayList(amp_seg8_dl_08002E20),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPSetGeometryMode(G_LIGHTING),
gsSPEndDisplayList(),
};

// 0x08002EC8
static const Ambient amp_seg8_light_08002EC8 = {
{{0x33, 0x3f, 0x00}, 0, {0x33, 0x3f, 0x00}, 0}
};

// 0x08002ED0
static const Light amp_seg8_light_08002ED0 = {
{{0xcf, 0xff, 0x00}, 0, {0xcf, 0xff, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
};

// //! Another malformed entry: Vertex interpreted as light
// 0x08002EE0
static const Vtx amp_seg8_vertex_08002EE0[] = {
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
{{{ 240, -160, 0}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
{{{ 280, 0, -35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
{{{ 280, 0, -35}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0xff}}},
{{{ 240, 160, 0}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0xff}}},
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0xff}}},
};

// 0x08002F40
static const Vtx amp_seg8_vertex_08002F40[] = {
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
{{{ 240, -160, 0}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
{{{ 280, 0, -35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
{{{ 280, 0, -35}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0xff}}},
{{{ 240, 160, 0}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0xff}}},
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0xff}}},
};

// 0x08002FA0
static const Vtx amp_seg8_vertex_08002FA0[] = {
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
{{{ 240, -160, 0}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
{{{ 280, 0, -35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
{{{ 280, 0, -35}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0xff}}},
{{{ 240, 160, 0}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0xff}}},
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0xff}}},
};

// 0x08003000
static const Vtx amp_seg8_vertex_08003000[] = {
{{{ 280, 0, -35}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0x00}}},
{{{ 240, 160, 0}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0x00}}},
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0x00}}},
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0xff}}},
{{{ 240, -160, 0}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0xff}}},
{{{ 280, 0, -35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0xff}}},
};

// 0x08003060
static const Vtx amp_seg8_vertex_08003060[] = {
{{{ -184, -54, -54}, 0, { 0, 0}, {0x8b, 0xde, 0xde, 0x00}}},
{{{ -184, -76, 0}, 0, { 0, 0}, {0x8b, 0xd0, 0x00, 0x00}}},
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
{{{ -141, -100, -100}, 0, { 0, 0}, {0xa6, 0xc1, 0xc1, 0xff}}},
{{{ -141, -141, 0}, 0, { 0, 0}, {0xa6, 0xa7, 0x00, 0xff}}},
{{{ -76, -130, -130}, 0, { 0, 0}, {0xd0, 0xae, 0xae, 0xff}}},
{{{ -76, -184, 0}, 0, { 0, 0}, {0xd0, 0x8b, 0x00, 0xff}}},
{{{ 0, -141, -141}, 0, { 0, 0}, {0x00, 0xa7, 0xa7, 0xff}}},
{{{ 0, -200, 0}, 0, { 0, 0}, {0x00, 0x81, 0x00, 0xff}}},
{{{ 76, -130, -130}, 0, { 0, 0}, {0x30, 0xae, 0xae, 0xff}}},
{{{ 76, -184, 0}, 0, { 0, 0}, {0x30, 0x8b, 0x00, 0xff}}},
{{{ 141, -100, -100}, 0, { 0, 0}, {0x5a, 0xc1, 0xc1, 0xff}}},
{{{ 141, -141, 0}, 0, { 0, 0}, {0x5a, 0xa7, 0x00, 0xff}}},
{{{ 184, -54, -54}, 0, { 0, 0}, {0x75, 0xde, 0xde, 0xff}}},
{{{ 184, -76, 0}, 0, { 0, 0}, {0x75, 0xd0, 0x00, 0xff}}},
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
};

// 0x08003160
static const Vtx amp_seg8_vertex_08003160[] = {
{{{ -184, 0, -76}, 0, { 0, 0}, {0x8b, 0x00, 0xd0, 0xff}}},
{{{ -184, -54, -54}, 0, { 0, 0}, {0x8b, 0xde, 0xde, 0x00}}},
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
{{{ -141, 0, -141}, 0, { 0, 0}, {0xa6, 0x00, 0xa7, 0xff}}},
{{{ -141, -100, -100}, 0, { 0, 0}, {0xa6, 0xc1, 0xc1, 0xff}}},
{{{ -76, 0, -184}, 0, { 0, 0}, {0xd0, 0x00, 0x8b, 0xff}}},
{{{ -76, -130, -130}, 0, { 0, 0}, {0xd0, 0xae, 0xae, 0xff}}},
{{{ 0, 0, -200}, 0, { 0, 0}, {0x00, 0x00, 0x81, 0xff}}},
{{{ 0, -141, -141}, 0, { 0, 0}, {0x00, 0xa7, 0xa7, 0xff}}},
{{{ 76, 0, -184}, 0, { 0, 0}, {0x30, 0x00, 0x8b, 0xff}}},
{{{ 76, -130, -130}, 0, { 0, 0}, {0x30, 0xae, 0xae, 0xff}}},
{{{ 141, 0, -141}, 0, { 0, 0}, {0x5a, 0x00, 0xa7, 0xff}}},
{{{ 141, -100, -100}, 0, { 0, 0}, {0x5a, 0xc1, 0xc1, 0xff}}},
{{{ 184, 0, -76}, 0, { 0, 0}, {0x75, 0x00, 0xd0, 0xff}}},
{{{ 184, -54, -54}, 0, { 0, 0}, {0x75, 0xde, 0xde, 0xff}}},
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
};

// 0x08003260
static const Vtx amp_seg8_vertex_08003260[] = {
{{{ -184, 54, -54}, 0, { 0, 0}, {0x8b, 0x22, 0xde, 0xff}}},
{{{ -184, 0, -76}, 0, { 0, 0}, {0x8b, 0x00, 0xd0, 0x00}}},
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
{{{ -141, 100, -100}, 0, { 0, 0}, {0xa6, 0x3f, 0xc1, 0xff}}},
{{{ -141, 0, -141}, 0, { 0, 0}, {0xa6, 0x00, 0xa7, 0xff}}},
{{{ -76, 130, -130}, 0, { 0, 0}, {0xd0, 0x52, 0xae, 0xff}}},
{{{ -76, 0, -184}, 0, { 0, 0}, {0xd0, 0x00, 0x8b, 0xff}}},
{{{ 0, 141, -141}, 0, { 0, 0}, {0x00, 0x59, 0xa7, 0xff}}},
{{{ 0, 0, -200}, 0, { 0, 0}, {0x00, 0x00, 0x81, 0xff}}},
{{{ 76, 130, -130}, 0, { 0, 0}, {0x30, 0x52, 0xae, 0xff}}},
{{{ 76, 0, -184}, 0, { 0, 0}, {0x30, 0x00, 0x8b, 0xff}}},
{{{ 141, 100, -100}, 0, { 0, 0}, {0x5a, 0x3f, 0xc1, 0xff}}},
{{{ 141, 0, -141}, 0, { 0, 0}, {0x5a, 0x00, 0xa7, 0xff}}},
{{{ 184, 54, -54}, 0, { 0, 0}, {0x75, 0x22, 0xde, 0xff}}},
{{{ 184, 0, -76}, 0, { 0, 0}, {0x75, 0x00, 0xd0, 0xff}}},
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
};

// 0x08003360
static const Vtx amp_seg8_vertex_08003360[] = {
{{{ -184, 76, 0}, 0, { 0, 0}, {0x8b, 0x30, 0x00, 0xff}}},
{{{ -184, 54, -54}, 0, { 0, 0}, {0x8b, 0x22, 0xde, 0x00}}},
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
{{{ -141, 141, 0}, 0, { 0, 0}, {0xa6, 0x59, 0x00, 0xff}}},
{{{ -141, 100, -100}, 0, { 0, 0}, {0xa6, 0x3f, 0xc1, 0xff}}},
{{{ -76, 184, 0}, 0, { 0, 0}, {0xd0, 0x75, 0x00, 0xff}}},
{{{ -76, 130, -130}, 0, { 0, 0}, {0xd0, 0x52, 0xae, 0xff}}},
{{{ 0, 200, 0}, 0, { 0, 0}, {0x00, 0x7f, 0x00, 0xff}}},
{{{ 0, 141, -141}, 0, { 0, 0}, {0x00, 0x59, 0xa7, 0xff}}},
{{{ 76, 184, 0}, 0, { 0, 0}, {0x30, 0x75, 0x00, 0xff}}},
{{{ 76, 130, -130}, 0, { 0, 0}, {0x30, 0x52, 0xae, 0xff}}},
{{{ 141, 141, 0}, 0, { 0, 0}, {0x5a, 0x59, 0x00, 0xff}}},
{{{ 141, 100, -100}, 0, { 0, 0}, {0x5a, 0x3f, 0xc1, 0xff}}},
{{{ 184, 76, 0}, 0, { 0, 0}, {0x75, 0x30, 0x00, 0xff}}},
{{{ 184, 54, -54}, 0, { 0, 0}, {0x75, 0x22, 0xde, 0xff}}},
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
};

// 0x08003460
static const Vtx amp_seg8_vertex_08003460[] = {
{{{ -184, 54, 54}, 0, { 0, 0}, {0x8b, 0x22, 0x22, 0xff}}},
{{{ -184, 76, 0}, 0, { 0, 0}, {0x8b, 0x30, 0x00, 0x00}}},
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
{{{ -141, 100, 100}, 0, { 0, 0}, {0xa6, 0x3f, 0x3f, 0xff}}},
{{{ -141, 141, 0}, 0, { 0, 0}, {0xa6, 0x59, 0x00, 0xff}}},
{{{ -76, 130, 130}, 0, { 0, 0}, {0xd0, 0x52, 0x52, 0xff}}},
{{{ -76, 184, 0}, 0, { 0, 0}, {0xd0, 0x75, 0x00, 0xff}}},
{{{ 0, 141, 141}, 0, { 0, 0}, {0x00, 0x59, 0x59, 0xff}}},
{{{ 0, 200, 0}, 0, { 0, 0}, {0x00, 0x7f, 0x00, 0xff}}},
{{{ 76, 130, 130}, 0, { 0, 0}, {0x30, 0x52, 0x52, 0xff}}},
{{{ 76, 184, 0}, 0, { 0, 0}, {0x30, 0x75, 0x00, 0xff}}},
{{{ 141, 100, 100}, 0, { 0, 0}, {0x5a, 0x3f, 0x3f, 0xff}}},
{{{ 141, 141, 0}, 0, { 0, 0}, {0x5a, 0x59, 0x00, 0xff}}},
{{{ 184, 54, 54}, 0, { 0, 0}, {0x75, 0x22, 0x22, 0xff}}},
{{{ 184, 76, 0}, 0, { 0, 0}, {0x75, 0x30, 0x00, 0xff}}},
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
};

// 0x08003560
static const Vtx amp_seg8_vertex_08003560[] = {
{{{ -184, 0, 76}, 0, { 0, 0}, {0x8b, 0x00, 0x30, 0xff}}},
{{{ -184, 54, 54}, 0, { 0, 0}, {0x8b, 0x22, 0x22, 0x00}}},
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
{{{ -141, 0, 141}, 0, { 0, 0}, {0xa6, 0x00, 0x59, 0xff}}},
{{{ -141, 100, 100}, 0, { 0, 0}, {0xa6, 0x3f, 0x3f, 0xff}}},
{{{ -76, 0, 184}, 0, { 0, 0}, {0xd0, 0x00, 0x75, 0xff}}},
{{{ -76, 130, 130}, 0, { 0, 0}, {0xd0, 0x52, 0x52, 0xff}}},
{{{ 0, 0, 200}, 0, { 0, 0}, {0x00, 0x00, 0x7f, 0xff}}},
{{{ 0, 141, 141}, 0, { 0, 0}, {0x00, 0x59, 0x59, 0xff}}},
{{{ 76, 0, 184}, 0, { 0, 0}, {0x30, 0x00, 0x75, 0xff}}},
{{{ 76, 130, 130}, 0, { 0, 0}, {0x30, 0x52, 0x52, 0xff}}},
{{{ 141, 0, 141}, 0, { 0, 0}, {0x5a, 0x00, 0x59, 0xff}}},
{{{ 141, 100, 100}, 0, { 0, 0}, {0x5a, 0x3f, 0x3f, 0xff}}},
{{{ 184, 0, 76}, 0, { 0, 0}, {0x75, 0x00, 0x30, 0xff}}},
{{{ 184, 54, 54}, 0, { 0, 0}, {0x75, 0x22, 0x22, 0xff}}},
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
};

// 0x08003660
static const Vtx amp_seg8_vertex_08003660[] = {
{{{ -184, -54, 54}, 0, { 0, 0}, {0x8b, 0xde, 0x22, 0xff}}},
{{{ -184, 0, 76}, 0, { 0, 0}, {0x8b, 0x00, 0x30, 0x00}}},
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
{{{ -141, -100, 100}, 0, { 0, 0}, {0xa6, 0xc1, 0x3f, 0xff}}},
{{{ -141, 0, 141}, 0, { 0, 0}, {0xa6, 0x00, 0x59, 0xff}}},
{{{ -76, -130, 130}, 0, { 0, 0}, {0xd0, 0xae, 0x52, 0xff}}},
{{{ -76, 0, 184}, 0, { 0, 0}, {0xd0, 0x00, 0x75, 0xff}}},
{{{ 0, -141, 141}, 0, { 0, 0}, {0x00, 0xa7, 0x59, 0xff}}},
{{{ 0, 0, 200}, 0, { 0, 0}, {0x00, 0x00, 0x7f, 0xff}}},
{{{ 76, -130, 130}, 0, { 0, 0}, {0x30, 0xae, 0x52, 0xff}}},
{{{ 76, 0, 184}, 0, { 0, 0}, {0x30, 0x00, 0x75, 0xff}}},
{{{ 141, -100, 100}, 0, { 0, 0}, {0x5a, 0xc1, 0x3f, 0xff}}},
{{{ 141, 0, 141}, 0, { 0, 0}, {0x5a, 0x00, 0x59, 0xff}}},
{{{ 184, -54, 54}, 0, { 0, 0}, {0x75, 0xde, 0x22, 0xff}}},
{{{ 184, 0, 76}, 0, { 0, 0}, {0x75, 0x00, 0x30, 0xff}}},
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
};

// 0x08003760
static const Vtx amp_seg8_vertex_08003760[] = {
{{{ -184, -76, 0}, 0, { 0, 0}, {0x8b, 0xd0, 0x00, 0xff}}},
{{{ -184, -54, 54}, 0, { 0, 0}, {0x8b, 0xde, 0x22, 0x00}}},
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
{{{ -141, -141, 0}, 0, { 0, 0}, {0xa6, 0xa7, 0x00, 0xff}}},
{{{ -141, -100, 100}, 0, { 0, 0}, {0xa6, 0xc1, 0x3f, 0xff}}},
{{{ -76, -184, 0}, 0, { 0, 0}, {0xd0, 0x8b, 0x00, 0xff}}},
{{{ -76, -130, 130}, 0, { 0, 0}, {0xd0, 0xae, 0x52, 0xff}}},
{{{ 0, -200, 0}, 0, { 0, 0}, {0x00, 0x81, 0x00, 0xff}}},
{{{ 0, -141, 141}, 0, { 0, 0}, {0x00, 0xa7, 0x59, 0xff}}},
{{{ 76, -184, 0}, 0, { 0, 0}, {0x30, 0x8b, 0x00, 0xff}}},
{{{ 76, -130, 130}, 0, { 0, 0}, {0x30, 0xae, 0x52, 0xff}}},
{{{ 141, -141, 0}, 0, { 0, 0}, {0x5a, 0xa7, 0x00, 0xff}}},
{{{ 141, -100, 100}, 0, { 0, 0}, {0x5a, 0xc1, 0x3f, 0xff}}},
{{{ 184, -76, 0}, 0, { 0, 0}, {0x75, 0xd0, 0x00, 0xff}}},
{{{ 184, -54, 54}, 0, { 0, 0}, {0x75, 0xde, 0x22, 0xff}}},
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
};

// 0x08003860
static const Vtx amp_seg8_vertex_08003860[] = {
{{{ -37, 90, 205}, 0, { 0, 0}, {0xcc, 0x00, 0x73, 0x00}}},
{{{ -129, 90, 163}, 0, { 0, 0}, {0xcc, 0x00, 0x73, 0x00}}},
{{{ -129, -90, 163}, 0, { 0, 0}, {0xcc, 0x00, 0x73, 0x00}}},
{{{ -37, -90, 205}, 0, { 0, 0}, {0xcc, 0x00, 0x73, 0xff}}},
};

// 0x080038A0
static const Vtx amp_seg8_vertex_080038A0[] = {
{{{ 112, -7, 182}, 0, { 0, 0}, {0x4c, 0xd8, 0x5c, 0x00}}},
{{{ 66, -139, 162}, 0, { 0, 0}, {0x4c, 0xd8, 0x5c, 0x00}}},
{{{ 175, -77, 98}, 0, { 0, 0}, {0x4c, 0xd8, 0x5c, 0x00}}},
};

// 0x080038D0
static const Vtx amp_seg8_vertex_080038D0[] = {
{{{ 63, 90, 198}, 0, { 0, 0}, {0x08, 0x00, 0x7e, 0x00}}},
{{{ -35, 90, 205}, 0, { 0, 0}, {0x08, 0x00, 0x7e, 0x00}}},
{{{ -35, -90, 205}, 0, { 0, 0}, {0x08, 0x00, 0x7e, 0x00}}},
{{{ 63, -90, 198}, 0, { 0, 0}, {0x08, 0x00, 0x7e, 0xff}}},
};

// 0x08003910 - 0x08003940
const Gfx amp_seg8_dl_08003910[] = {
gsSPLight(&amp_seg8_light_08002ED0, 1),
gsSPLight(&amp_seg8_light_08002EC8, 2),
gsSPVertex(amp_seg8_vertex_08002EE0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
};

// 0x08003940 - 0x08003970
const Gfx amp_seg8_dl_08003940[] = {
gsSPLight(&amp_seg8_light_08002ED0, 1),
gsSPLight(&amp_seg8_light_08002EC8, 2),
gsSPVertex(amp_seg8_vertex_08002F40, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
};

// 0x08003970 - 0x080039A0
const Gfx amp_seg8_dl_08003970[] = {
gsSPLight(&amp_seg8_light_08002ED0, 1),
gsSPLight(&amp_seg8_light_08002EC8, 2),
gsSPVertex(amp_seg8_vertex_08002FA0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
};

// 0x080039A0 - 0x080039D0
const Gfx amp_seg8_dl_080039A0[] = {
gsSPLight(&amp_seg8_light_08002ED0, 1),
gsSPLight(&amp_seg8_light_08002EC8, 2),
gsSPVertex(amp_seg8_vertex_08003000, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
};

// 0x080039D0 - 0x08003DA8
const Gfx amp_seg8_dl_080039D0[] = {
gsSPLight((const u8*)amp_seg8_vertex_08002EE0 + 0x8, 1),
gsSPLight((const u8*)amp_seg8_vertex_08002EE0, 2),
gsSPVertex(amp_seg8_vertex_08003060, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 8, 7, 9, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
gsSPVertex(amp_seg8_vertex_08003160, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 8, 7, 9, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
gsSPVertex(amp_seg8_vertex_08003260, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 8, 7, 9, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
gsSPVertex(amp_seg8_vertex_08003360, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 8, 7, 9, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
gsSPVertex(amp_seg8_vertex_08003460, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 8, 7, 9, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
gsSPVertex(amp_seg8_vertex_08003560, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 8, 7, 9, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
gsSPVertex(amp_seg8_vertex_08003660, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 8, 7, 9, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
gsSPVertex(amp_seg8_vertex_08003760, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 8, 7, 9, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
gsSPEndDisplayList(),
};

// 0x08003DA8 - 0x08003DD8
const Gfx amp_seg8_dl_08003DA8[] = {
gsSPLight((const u8*)amp_seg8_vertex_08002EE0 + 0x8, 1),
gsSPLight((const u8*)amp_seg8_vertex_08002EE0, 2),
gsSPVertex(amp_seg8_vertex_08003860, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
};

// 0x08003DD8 - 0x08003E00
const Gfx amp_seg8_dl_08003DD8[] = {
gsSPLight((const u8*)amp_seg8_vertex_08002EE0 + 0x8, 1),
gsSPLight((const u8*)amp_seg8_vertex_08002EE0, 2),
gsSPVertex(amp_seg8_vertex_080038A0, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPEndDisplayList(),
};

// 0x08003E00 - 0x08003E30
const Gfx amp_seg8_dl_08003E00[] = {
gsSPLight((const u8*)amp_seg8_vertex_08002EE0 + 0x8, 1),
gsSPLight((const u8*)amp_seg8_vertex_08002EE0, 2),
gsSPVertex(amp_seg8_vertex_080038D0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
};

+ 0
- 503
actors/amp/model.s View File

@@ -1,503 +0,0 @@
# Amp

amp_seg8_texture_08000F18: # 0x08000F18
.incbin "actors/amp/amp_electricity.rgba16"

amp_seg8_texture_08001318: # 0x08001318
.incbin "actors/amp/amp_eyes.rgba16"

amp_seg8_texture_08001B18: # 0x08001B18
.incbin "actors/amp/amp_body.rgba16"

amp_seg8_texture_08002318: # 0x08002318
.incbin "actors/amp/amp_mouth.rgba16"

amp_seg8_vertex_08002B18: # 0x08002B18
vertex 224, 0, -89, 0, 480, 0xFF, 0xFF, 0xFF, 0xFF
vertex 187, 149, 0, 223, 1078, 0xFF, 0xFF, 0xFF, 0xFF
vertex 224, 0, 90, 479, 478, 0xFF, 0xFF, 0xFF, 0xFF
vertex 187, -148, 0, 224, -122, 0xFF, 0xFF, 0xFF, 0xFF
vertex 224, 0, -89, 0, 478, 0xFF, 0xFF, 0xFF, 0xFF

glabel amp_seg8_dl_08002B68 # 0x08002B68 - 0x08002BA0
gsDPSetTextureImage G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, amp_seg8_texture_08000F18
gsDPLoadSync
gsDPLoadBlock 7, 0, 0, 0x1FF, 0x200
gsSPVertex amp_seg8_vertex_08002B18, 5, 0
gsSP2Triangles 0, 1, 2, 0x0, 2, 3, 4, 0x0
gsSPEndDisplayList

glabel amp_seg8_dl_08002BA0 # 0x08002BA0 - 0x08002C10
gsDPPipeSync
gsDPSetCombineModeLERP1Cycle G_CCMUX_0, G_CCMUX_0, G_CCMUX_0, G_CCMUX_TEXEL0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_TEXEL0
gsSPClearGeometryMode G_LIGHTING | G_CULL_BACK
gsDPSetTile G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD
gsSPTexture -1, -1, 0, 0, 1
gsDPTileSync
gsDPSetTile G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP | G_TX_NOMIRROR, 4, G_TX_NOLOD
gsDPSetTileSize 0, 0, 0, 60, 124
gsSPDisplayList amp_seg8_dl_08002B68
gsSPTexture -1, -1, 0, 0, 0
gsDPPipeSync
gsDPSetCombineModeLERP1Cycle G_CCMUX_0, G_CCMUX_0, G_CCMUX_0, G_CCMUX_SHADE, G_ACMUX_0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_SHADE
gsSPSetGeometryMode G_LIGHTING | G_CULL_BACK
gsSPEndDisplayList

amp_seg8_vertex_08002C10: # 0x08002C10
vertex 68, 72, 158, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF
vertex -27, -71, 164, 990, 990, 0xFF, 0xFF, 0xFF, 0xFF
vertex 68, -71, 158, 990, 0, 0xFF, 0xFF, 0xFF, 0xFF
vertex -27, 72, 164, 0, 990, 0xFF, 0xFF, 0xFF, 0xFF

glabel amp_seg8_dl_08002C50 # 0x08002C50 - 0x08002C88
gsDPSetTextureImage G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, amp_seg8_texture_08001318
gsDPLoadSync
gsDPLoadBlock 7, 0, 0, 0x3FF, 0x100
gsSPVertex amp_seg8_vertex_08002C10, 4, 0
gsSP2Triangles 0, 1, 2, 0x0, 0, 3, 1, 0x0
gsSPEndDisplayList

glabel amp_seg8_dl_08002C88 # 0x08002C88 - 0x08002CF8
gsDPPipeSync
gsDPSetCombineModeLERP1Cycle G_CCMUX_0, G_CCMUX_0, G_CCMUX_0, G_CCMUX_TEXEL0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_TEXEL0
gsSPClearGeometryMode G_LIGHTING
gsDPSetTile G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD
gsSPTexture -1, -1, 0, 0, 1
gsDPTileSync
gsDPSetTile G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP | G_TX_NOMIRROR, 5, G_TX_NOLOD
gsDPSetTileSize 0, 0, 0, 124, 124
gsSPDisplayList amp_seg8_dl_08002C50
gsSPTexture -1, -1, 0, 0, 0
gsDPPipeSync
gsDPSetCombineModeLERP1Cycle G_CCMUX_0, G_CCMUX_0, G_CCMUX_0, G_CCMUX_SHADE, G_ACMUX_0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_SHADE
gsSPSetGeometryMode G_LIGHTING
gsSPEndDisplayList

amp_seg8_vertex_08002CF8: # 0x08002CF8
vertex -29, 72, 164, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF
vertex -124, -71, 121, 990, 990, 0xFF, 0xFF, 0xFF, 0xFF
vertex -29, -71, 164, 990, 0, 0xFF, 0xFF, 0xFF, 0xFF
vertex -124, 72, 121, 0, 990, 0xFF, 0xFF, 0xFF, 0xFF

glabel amp_seg8_dl_08002D38 # 0x08002D38 - 0x08002D70
gsDPSetTextureImage G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, amp_seg8_texture_08002318
gsDPLoadSync
gsDPLoadBlock 7, 0, 0, 0x3FF, 0x100
gsSPVertex amp_seg8_vertex_08002CF8, 4, 0
gsSP2Triangles 0, 1, 2, 0x0, 0, 3, 1, 0x0
gsSPEndDisplayList

glabel amp_seg8_dl_08002D70 # 0x08002D70 - 0x08002DE0
gsDPPipeSync
gsDPSetCombineModeLERP1Cycle G_CCMUX_0, G_CCMUX_0, G_CCMUX_0, G_CCMUX_TEXEL0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_TEXEL0
gsSPClearGeometryMode G_LIGHTING
gsDPSetTile G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD
gsSPTexture -1, -1, 0, 0, 1
gsDPTileSync
gsDPSetTile G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP | G_TX_NOMIRROR, 5, G_TX_NOLOD
gsDPSetTileSize 0, 0, 0, 124, 124
gsSPDisplayList amp_seg8_dl_08002D38
gsSPTexture -1, -1, 0, 0, 0
gsDPPipeSync
gsDPSetCombineModeLERP1Cycle G_CCMUX_0, G_CCMUX_0, G_CCMUX_0, G_CCMUX_SHADE, G_ACMUX_0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_SHADE
gsSPSetGeometryMode G_LIGHTING
gsSPEndDisplayList

amp_seg8_vertex_08002DE0: # 0x08002DE0
vertex -39, -39, 0, 0, 990, 0xFF, 0xFF, 0xFF, 0xFF
vertex 40, 40, 0, 990, 0, 0xFF, 0xFF, 0xFF, 0xFF
vertex -39, 40, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF
vertex 40, -39, 0, 990, 990, 0xFF, 0xFF, 0xFF, 0xFF

glabel amp_seg8_dl_08002E20 # 0x08002E20 - 0x08002E58
gsDPSetTextureImage G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, amp_seg8_texture_08001B18
gsDPLoadSync
gsDPLoadBlock 7, 0, 0, 0x3FF, 0x100
gsSPVertex amp_seg8_vertex_08002DE0, 4, 0
gsSP2Triangles 0, 1, 2, 0x0, 0, 3, 1, 0x0
gsSPEndDisplayList

glabel amp_seg8_dl_08002E58 # 0x08002E58 - 0x08002EC8
gsDPPipeSync
gsDPSetCombineModeLERP1Cycle G_CCMUX_0, G_CCMUX_0, G_CCMUX_0, G_CCMUX_TEXEL0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_TEXEL0
gsSPClearGeometryMode G_LIGHTING
gsDPSetTile G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD
gsSPTexture -1, -1, 0, 0, 1
gsDPTileSync
gsDPSetTile G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP | G_TX_NOMIRROR, 5, G_TX_NOLOD
gsDPSetTileSize 0, 0, 0, 124, 124
gsSPDisplayList amp_seg8_dl_08002E20
gsSPTexture -1, -1, 0, 0, 0
gsDPPipeSync
gsDPSetCombineModeLERP1Cycle G_CCMUX_0, G_CCMUX_0, G_CCMUX_0, G_CCMUX_SHADE, G_ACMUX_0, G_ACMUX_0, G_ACMUX_0, G_ACMUX_SHADE
gsSPSetGeometryMode G_LIGHTING
gsSPEndDisplayList

amp_seg8_light_08002EC8: # 0x08002EC8
.byte 0x33, 0x3F, 0x00, 0x00, 0x33, 0x3F, 0x00, 0x00

amp_seg8_light_08002ED0: # 0x08002ED0
.byte 0xCF, 0xFF, 0x00, 0x00, 0xCF, 0xFF, 0x00, 0x00
.byte 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00

# //! Another malformed entry: Vertex interpreted as light
amp_seg8_vertex_08002EE0: # 0x08002EE0
vertex 280, 0, 35, 0, 0, 0x7B, 0xE2, 0x00, 0x00
vertex 240, -160, 0, 0, 0, 0x7B, 0xE2, 0x00, 0x00
vertex 280, 0, -35, 0, 0, 0x7B, 0xE2, 0x00, 0x00
vertex 280, 0, -35, 0, 0, 0x7B, 0x1E, 0x00, 0xFF
vertex 240, 160, 0, 0, 0, 0x7B, 0x1E, 0x00, 0xFF
vertex 280, 0, 35, 0, 0, 0x7B, 0x1E, 0x00, 0xFF

amp_seg8_vertex_08002F40: # 0x08002F40
vertex 280, 0, 35, 0, 0, 0x7B, 0xE2, 0x00, 0x00
vertex 240, -160, 0, 0, 0, 0x7B, 0xE2, 0x00, 0x00
vertex 280, 0, -35, 0, 0, 0x7B, 0xE2, 0x00, 0x00
vertex 280, 0, -35, 0, 0, 0x7B, 0x1E, 0x00, 0xFF
vertex 240, 160, 0, 0, 0, 0x7B, 0x1E, 0x00, 0xFF
vertex 280, 0, 35, 0, 0, 0x7B, 0x1E, 0x00, 0xFF

amp_seg8_vertex_08002FA0: # 0x08002FA0
vertex 280, 0, 35, 0, 0, 0x7B, 0xE2, 0x00, 0x00
vertex 240, -160, 0, 0, 0, 0x7B, 0xE2, 0x00, 0x00
vertex 280, 0, -35, 0, 0, 0x7B, 0xE2, 0x00, 0x00
vertex 280, 0, -35, 0, 0, 0x7B, 0x1E, 0x00, 0xFF
vertex 240, 160, 0, 0, 0, 0x7B, 0x1E, 0x00, 0xFF
vertex 280, 0, 35, 0, 0, 0x7B, 0x1E, 0x00, 0xFF

amp_seg8_vertex_08003000: # 0x08003000
vertex 280, 0, -35, 0, 0, 0x7B, 0x1E, 0x00, 0x00
vertex 240, 160, 0, 0, 0, 0x7B, 0x1E, 0x00, 0x00
vertex 280, 0, 35, 0, 0, 0x7B, 0x1E, 0x00, 0x00
vertex 280, 0, 35, 0, 0, 0x7B, 0xE2, 0x00, 0xFF
vertex 240, -160, 0, 0, 0, 0x7B, 0xE2, 0x00, 0xFF
vertex 280, 0, -35, 0, 0, 0x7B, 0xE2, 0x00, 0xFF

amp_seg8_vertex_08003060: # 0x08003060
vertex -184, -54, -54, 0, 0, 0x8B, 0xDE, 0xDE, 0x00
vertex -184, -76, 0, 0, 0, 0x8B, 0xD0, 0x00, 0x00
vertex -200, 0, 0, 0, 0, 0x81, 0x00, 0x00, 0x00
vertex -141, -100, -100, 0, 0, 0xA6, 0xC1, 0xC1, 0xFF
vertex -141, -141, 0, 0, 0, 0xA6, 0xA7, 0x00, 0xFF
vertex -76, -130, -130, 0, 0, 0xD0, 0xAE, 0xAE, 0xFF
vertex -76, -184, 0, 0, 0, 0xD0, 0x8B, 0x00, 0xFF
vertex 0, -141, -141, 0, 0, 0x00, 0xA7, 0xA7, 0xFF
vertex 0, -200, 0, 0, 0, 0x00, 0x81, 0x00, 0xFF
vertex 76, -130, -130, 0, 0, 0x30, 0xAE, 0xAE, 0xFF
vertex 76, -184, 0, 0, 0, 0x30, 0x8B, 0x00, 0xFF
vertex 141, -100, -100, 0, 0, 0x5A, 0xC1, 0xC1, 0xFF
vertex 141, -141, 0, 0, 0, 0x5A, 0xA7, 0x00, 0xFF
vertex 184, -54, -54, 0, 0, 0x75, 0xDE, 0xDE, 0xFF
vertex 184, -76, 0, 0, 0, 0x75, 0xD0, 0x00, 0xFF
vertex 200, 0, 0, 0, 0, 0x7F, 0x00, 0x00, 0xFF

amp_seg8_vertex_08003160: # 0x08003160
vertex -184, 0, -76, 0, 0, 0x8B, 0x00, 0xD0, 0xFF
vertex -184, -54, -54, 0, 0, 0x8B, 0xDE, 0xDE, 0x00
vertex -200, 0, 0, 0, 0, 0x81, 0x00, 0x00, 0x00
vertex -141, 0, -141, 0, 0, 0xA6, 0x00, 0xA7, 0xFF
vertex -141, -100, -100, 0, 0, 0xA6, 0xC1, 0xC1, 0xFF
vertex -76, 0, -184, 0, 0, 0xD0, 0x00, 0x8B, 0xFF
vertex -76, -130, -130, 0, 0, 0xD0, 0xAE, 0xAE, 0xFF
vertex 0, 0, -200, 0, 0, 0x00, 0x00, 0x81, 0xFF
vertex 0, -141, -141, 0, 0, 0x00, 0xA7, 0xA7, 0xFF
vertex 76, 0, -184, 0, 0, 0x30, 0x00, 0x8B, 0xFF
vertex 76, -130, -130, 0, 0, 0x30, 0xAE, 0xAE, 0xFF
vertex 141, 0, -141, 0, 0, 0x5A, 0x00, 0xA7, 0xFF
vertex 141, -100, -100, 0, 0, 0x5A, 0xC1, 0xC1, 0xFF
vertex 184, 0, -76, 0, 0, 0x75, 0x00, 0xD0, 0xFF
vertex 184, -54, -54, 0, 0, 0x75, 0xDE, 0xDE, 0xFF
vertex 200, 0, 0, 0, 0, 0x7F, 0x00, 0x00, 0xFF

amp_seg8_vertex_08003260: # 0x08003260
vertex -184, 54, -54, 0, 0, 0x8B, 0x22, 0xDE, 0xFF
vertex -184, 0, -76, 0, 0, 0x8B, 0x00, 0xD0, 0x00
vertex -200, 0, 0, 0, 0, 0x81, 0x00, 0x00, 0x00
vertex -141, 100, -100, 0, 0, 0xA6, 0x3F, 0xC1, 0xFF
vertex -141, 0, -141, 0, 0, 0xA6, 0x00, 0xA7, 0xFF
vertex -76, 130, -130, 0, 0, 0xD0, 0x52, 0xAE, 0xFF
vertex -76, 0, -184, 0, 0, 0xD0, 0x00, 0x8B, 0xFF
vertex 0, 141, -141, 0, 0, 0x00, 0x59, 0xA7, 0xFF
vertex 0, 0, -200, 0, 0, 0x00, 0x00, 0x81, 0xFF
vertex 76, 130, -130, 0, 0, 0x30, 0x52, 0xAE, 0xFF
vertex 76, 0, -184, 0, 0, 0x30, 0x00, 0x8B, 0xFF
vertex 141, 100, -100, 0, 0, 0x5A, 0x3F, 0xC1, 0xFF
vertex 141, 0, -141, 0, 0, 0x5A, 0x00, 0xA7, 0xFF
vertex 184, 54, -54, 0, 0, 0x75, 0x22, 0xDE, 0xFF
vertex 184, 0, -76, 0, 0, 0x75, 0x00, 0xD0, 0xFF
vertex 200, 0, 0, 0, 0, 0x7F, 0x00, 0x00, 0xFF

amp_seg8_vertex_08003360: # 0x08003360
vertex -184, 76, 0, 0, 0, 0x8B, 0x30, 0x00, 0xFF
vertex -184, 54, -54, 0, 0, 0x8B, 0x22, 0xDE, 0x00
vertex -200, 0, 0, 0, 0, 0x81, 0x00, 0x00, 0x00
vertex -141, 141, 0, 0, 0, 0xA6, 0x59, 0x00, 0xFF
vertex -141, 100, -100, 0, 0, 0xA6, 0x3F, 0xC1, 0xFF
vertex -76, 184, 0, 0, 0, 0xD0, 0x75, 0x00, 0xFF
vertex -76, 130, -130, 0, 0, 0xD0, 0x52, 0xAE, 0xFF
vertex 0, 200, 0, 0, 0, 0x00, 0x7F, 0x00, 0xFF
vertex 0, 141, -141, 0, 0, 0x00, 0x59, 0xA7, 0xFF
vertex 76, 184, 0, 0, 0, 0x30, 0x75, 0x00, 0xFF
vertex 76, 130, -130, 0, 0, 0x30, 0x52, 0xAE, 0xFF
vertex 141, 141, 0, 0, 0, 0x5A, 0x59, 0x00, 0xFF
vertex 141, 100, -100, 0, 0, 0x5A, 0x3F, 0xC1, 0xFF
vertex 184, 76, 0, 0, 0, 0x75, 0x30, 0x00, 0xFF
vertex 184, 54, -54, 0, 0, 0x75, 0x22, 0xDE, 0xFF
vertex 200, 0, 0, 0, 0, 0x7F, 0x00, 0x00, 0xFF

amp_seg8_vertex_08003460: # 0x08003460
vertex -184, 54, 54, 0, 0, 0x8B, 0x22, 0x22, 0xFF
vertex -184, 76, 0, 0, 0, 0x8B, 0x30, 0x00, 0x00
vertex -200, 0, 0, 0, 0, 0x81, 0x00, 0x00, 0x00
vertex -141, 100, 100, 0, 0, 0xA6, 0x3F, 0x3F, 0xFF
vertex -141, 141, 0, 0, 0, 0xA6, 0x59, 0x00, 0xFF
vertex -76, 130, 130, 0, 0, 0xD0, 0x52, 0x52, 0xFF
vertex -76, 184, 0, 0, 0, 0xD0, 0x75, 0x00, 0xFF
vertex 0, 141, 141, 0, 0, 0x00, 0x59, 0x59, 0xFF
vertex 0, 200, 0, 0, 0, 0x00, 0x7F, 0x00, 0xFF
vertex 76, 130, 130, 0, 0, 0x30, 0x52, 0x52, 0xFF
vertex 76, 184, 0, 0, 0, 0x30, 0x75, 0x00, 0xFF
vertex 141, 100, 100, 0, 0, 0x5A, 0x3F, 0x3F, 0xFF
vertex 141, 141, 0, 0, 0, 0x5A, 0x59, 0x00, 0xFF
vertex 184, 54, 54, 0, 0, 0x75, 0x22, 0x22, 0xFF
vertex 184, 76, 0, 0, 0, 0x75, 0x30, 0x00, 0xFF
vertex 200, 0, 0, 0, 0, 0x7F, 0x00, 0x00, 0xFF

amp_seg8_vertex_08003560: # 0x08003560
vertex -184, 0, 76, 0, 0, 0x8B, 0x00, 0x30, 0xFF
vertex -184, 54, 54, 0, 0, 0x8B, 0x22, 0x22, 0x00
vertex -200, 0, 0, 0, 0, 0x81, 0x00, 0x00, 0x00
vertex -141, 0, 141, 0, 0, 0xA6, 0x00, 0x59, 0xFF
vertex -141, 100, 100, 0, 0, 0xA6, 0x3F, 0x3F, 0xFF
vertex -76, 0, 184, 0, 0, 0xD0, 0x00, 0x75, 0xFF
vertex -76, 130, 130, 0, 0, 0xD0, 0x52, 0x52, 0xFF
vertex 0, 0, 200, 0, 0, 0x00, 0x00, 0x7F, 0xFF
vertex 0, 141, 141, 0, 0, 0x00, 0x59, 0x59, 0xFF
vertex 76, 0, 184, 0, 0, 0x30, 0x00, 0x75, 0xFF
vertex 76, 130, 130, 0, 0, 0x30, 0x52, 0x52, 0xFF
vertex 141, 0, 141, 0, 0, 0x5A, 0x00, 0x59, 0xFF
vertex 141, 100, 100, 0, 0, 0x5A, 0x3F, 0x3F, 0xFF
vertex 184, 0, 76, 0, 0, 0x75, 0x00, 0x30, 0xFF
vertex 184, 54, 54, 0, 0, 0x75, 0x22, 0x22, 0xFF
vertex 200, 0, 0, 0, 0, 0x7F, 0x00, 0x00, 0xFF

amp_seg8_vertex_08003660: # 0x08003660
vertex -184, -54, 54, 0, 0, 0x8B, 0xDE, 0x22, 0xFF
vertex -184, 0, 76, 0, 0, 0x8B, 0x00, 0x30, 0x00
vertex -200, 0, 0, 0, 0, 0x81, 0x00, 0x00, 0x00
vertex -141, -100, 100, 0, 0, 0xA6, 0xC1, 0x3F, 0xFF
vertex -141, 0, 141, 0, 0, 0xA6, 0x00, 0x59, 0xFF
vertex -76, -130, 130, 0, 0, 0xD0, 0xAE, 0x52, 0xFF
vertex -76, 0, 184, 0, 0, 0xD0, 0x00, 0x75, 0xFF
vertex 0, -141, 141, 0, 0, 0x00, 0xA7, 0x59, 0xFF
vertex 0, 0, 200, 0, 0, 0x00, 0x00, 0x7F, 0xFF
vertex 76, -130, 130, 0, 0, 0x30, 0xAE, 0x52, 0xFF
vertex 76, 0, 184, 0, 0, 0x30, 0x00, 0x75, 0xFF
vertex 141, -100, 100, 0, 0, 0x5A, 0xC1, 0x3F, 0xFF
vertex 141, 0, 141, 0, 0, 0x5A, 0x00, 0x59, 0xFF
vertex 184, -54, 54, 0, 0, 0x75, 0xDE, 0x22, 0xFF
vertex 184, 0, 76, 0, 0, 0x75, 0x00, 0x30, 0xFF
vertex 200, 0, 0, 0, 0, 0x7F, 0x00, 0x00, 0xFF

amp_seg8_vertex_08003760: # 0x08003760
vertex -184, -76, 0, 0, 0, 0x8B, 0xD0, 0x00, 0xFF
vertex -184, -54, 54, 0, 0, 0x8B, 0xDE, 0x22, 0x00
vertex -200, 0, 0, 0, 0, 0x81, 0x00, 0x00, 0x00
vertex -141, -141, 0, 0, 0, 0xA6, 0xA7, 0x00, 0xFF
vertex -141, -100, 100, 0, 0, 0xA6, 0xC1, 0x3F, 0xFF
vertex -76, -184, 0, 0, 0, 0xD0, 0x8B, 0x00, 0xFF
vertex -76, -130, 130, 0, 0, 0xD0, 0xAE, 0x52, 0xFF
vertex 0, -200, 0, 0, 0, 0x00, 0x81, 0x00, 0xFF
vertex 0, -141, 141, 0, 0, 0x00, 0xA7, 0x59, 0xFF
vertex 76, -184, 0, 0, 0, 0x30, 0x8B, 0x00, 0xFF
vertex 76, -130, 130, 0, 0, 0x30, 0xAE, 0x52, 0xFF
vertex 141, -141, 0, 0, 0, 0x5A, 0xA7, 0x00, 0xFF
vertex 141, -100, 100, 0, 0, 0x5A, 0xC1, 0x3F, 0xFF
vertex 184, -76, 0, 0, 0, 0x75, 0xD0, 0x00, 0xFF
vertex 184, -54, 54, 0, 0, 0x75, 0xDE, 0x22, 0xFF
vertex 200, 0, 0, 0, 0, 0x7F, 0x00, 0x00, 0xFF

amp_seg8_vertex_08003860: # 0x08003860
vertex -37, 90, 205, 0, 0, 0xCC, 0x00, 0x73, 0x00
vertex -129, 90, 163, 0, 0, 0xCC, 0x00, 0x73, 0x00
vertex -129, -90, 163, 0, 0, 0xCC, 0x00, 0x73, 0x00
vertex -37, -90, 205, 0, 0, 0xCC, 0x00, 0x73, 0xFF

amp_seg8_vertex_080038A0: # 0x080038A0
vertex 112, -7, 182, 0, 0, 0x4C, 0xD8, 0x5C, 0x00
vertex 66, -139, 162, 0, 0, 0x4C, 0xD8, 0x5C, 0x00
vertex 175, -77, 98, 0, 0, 0x4C, 0xD8, 0x5C, 0x00

amp_seg8_vertex_080038D0: # 0x080038D0
vertex 63, 90, 198, 0, 0, 0x08, 0x00, 0x7E, 0x00
vertex -35, 90, 205, 0, 0, 0x08, 0x00, 0x7E, 0x00
vertex -35, -90, 205, 0, 0, 0x08, 0x00, 0x7E, 0x00
vertex 63, -90, 198, 0, 0, 0x08, 0x00, 0x7E, 0xFF

glabel amp_seg8_dl_08003910 # 0x08003910 - 0x08003940
gsSPLight amp_seg8_light_08002ED0, 1
gsSPLight amp_seg8_light_08002EC8, 2
gsSPVertex amp_seg8_vertex_08002EE0, 6, 0
gsSP2Triangles 0, 1, 2, 0x0, 3, 4, 5, 0x0
gsSPEndDisplayList

glabel amp_seg8_dl_08003940 # 0x08003940 - 0x08003970
gsSPLight amp_seg8_light_08002ED0, 1
gsSPLight amp_seg8_light_08002EC8, 2
gsSPVertex amp_seg8_vertex_08002F40, 6, 0
gsSP2Triangles 0, 1, 2, 0x0, 3, 4, 5, 0x0
gsSPEndDisplayList

glabel amp_seg8_dl_08003970 # 0x08003970 - 0x080039A0
gsSPLight amp_seg8_light_08002ED0, 1
gsSPLight amp_seg8_light_08002EC8, 2
gsSPVertex amp_seg8_vertex_08002FA0, 6, 0
gsSP2Triangles 0, 1, 2, 0x0, 3, 4, 5, 0x0
gsSPEndDisplayList

glabel amp_seg8_dl_080039A0 # 0x080039A0 - 0x080039D0
gsSPLight amp_seg8_light_08002ED0, 1
gsSPLight amp_seg8_light_08002EC8, 2
gsSPVertex amp_seg8_vertex_08003000, 6, 0
gsSP2Triangles 0, 1, 2, 0x0, 3, 4, 5, 0x0
gsSPEndDisplayList

glabel amp_seg8_dl_080039D0 # 0x080039D0 - 0x08003DA8
gsSPLight amp_seg8_vertex_08002EE0 + 0x8, 1
gsSPLight amp_seg8_vertex_08002EE0, 2
gsSPVertex amp_seg8_vertex_08003060, 16, 0
gsSP2Triangles 0, 1, 2, 0x0, 1, 0, 3, 0x0
gsSP2Triangles 1, 3, 4, 0x0, 4, 3, 5, 0x0
gsSP2Triangles 4, 5, 6, 0x0, 6, 5, 7, 0x0
gsSP2Triangles 6, 7, 8, 0x0, 8, 7, 9, 0x0
gsSP2Triangles 8, 9, 10, 0x0, 10, 9, 11, 0x0
gsSP2Triangles 10, 11, 12, 0x0, 12, 11, 13, 0x0
gsSP2Triangles 12, 13, 14, 0x0, 14, 13, 15, 0x0
gsSPVertex amp_seg8_vertex_08003160, 16, 0
gsSP2Triangles 0, 1, 2, 0x0, 1, 0, 3, 0x0
gsSP2Triangles 1, 3, 4, 0x0, 4, 3, 5, 0x0
gsSP2Triangles 4, 5, 6, 0x0, 6, 5, 7, 0x0
gsSP2Triangles 6, 7, 8, 0x0, 8, 7, 9, 0x0
gsSP2Triangles 8, 9, 10, 0x0, 10, 9, 11, 0x0
gsSP2Triangles 10, 11, 12, 0x0, 12, 11, 13, 0x0
gsSP2Triangles 12, 13, 14, 0x0, 14, 13, 15, 0x0
gsSPVertex amp_seg8_vertex_08003260, 16, 0
gsSP2Triangles 0, 1, 2, 0x0, 1, 0, 3, 0x0
gsSP2Triangles 1, 3, 4, 0x0, 4, 3, 5, 0x0
gsSP2Triangles 4, 5, 6, 0x0, 6, 5, 7, 0x0
gsSP2Triangles 6, 7, 8, 0x0, 8, 7, 9, 0x0
gsSP2Triangles 8, 9, 10, 0x0, 10, 9, 11, 0x0
gsSP2Triangles 10, 11, 12, 0x0, 12, 11, 13, 0x0
gsSP2Triangles 12, 13, 14, 0x0, 14, 13, 15, 0x0
gsSPVertex amp_seg8_vertex_08003360, 16, 0
gsSP2Triangles 0, 1, 2, 0x0, 1, 0, 3, 0x0
gsSP2Triangles 1, 3, 4, 0x0, 4, 3, 5, 0x0
gsSP2Triangles 4, 5, 6, 0x0, 6, 5, 7, 0x0
gsSP2Triangles 6, 7, 8, 0x0, 8, 7, 9, 0x0
gsSP2Triangles 8, 9, 10, 0x0, 10, 9, 11, 0x0
gsSP2Triangles 10, 11, 12, 0x0, 12, 11, 13, 0x0
gsSP2Triangles 12, 13, 14, 0x0, 14, 13, 15, 0x0
gsSPVertex amp_seg8_vertex_08003460, 16, 0
gsSP2Triangles 0, 1, 2, 0x0, 1, 0, 3, 0x0
gsSP2Triangles 1, 3, 4, 0x0, 4, 3, 5, 0x0
gsSP2Triangles 4, 5, 6, 0x0, 6, 5, 7, 0x0
gsSP2Triangles 6, 7, 8, 0x0, 8, 7, 9, 0x0
gsSP2Triangles 8, 9, 10, 0x0, 10, 9, 11, 0x0
gsSP2Triangles 10, 11, 12, 0x0, 12, 11, 13, 0x0
gsSP2Triangles 12, 13, 14, 0x0, 14, 13, 15, 0x0
gsSPVertex amp_seg8_vertex_08003560, 16, 0
gsSP2Triangles 0, 1, 2, 0x0, 1, 0, 3, 0x0
gsSP2Triangles 1, 3, 4, 0x0, 4, 3, 5, 0x0
gsSP2Triangles 4, 5, 6, 0x0, 6, 5, 7, 0x0
gsSP2Triangles 6, 7, 8, 0x0, 8, 7, 9, 0x0
gsSP2Triangles 8, 9, 10, 0x0, 10, 9, 11, 0x0
gsSP2Triangles 10, 11, 12, 0x0, 12, 11, 13, 0x0
gsSP2Triangles 12, 13, 14, 0x0, 14, 13, 15, 0x0
gsSPVertex amp_seg8_vertex_08003660, 16, 0
gsSP2Triangles 0, 1, 2, 0x0, 1, 0, 3, 0x0
gsSP2Triangles 1, 3, 4, 0x0, 4, 3, 5, 0x0
gsSP2Triangles 4, 5, 6, 0x0, 6, 5, 7, 0x0
gsSP2Triangles 6, 7, 8, 0x0, 8, 7, 9, 0x0
gsSP2Triangles 8, 9, 10, 0x0, 10, 9, 11, 0x0
gsSP2Triangles 10, 11, 12, 0x0, 12, 11, 13, 0x0
gsSP2Triangles 12, 13, 14, 0x0, 14, 13, 15, 0x0
gsSPVertex amp_seg8_vertex_08003760, 16, 0
gsSP2Triangles 0, 1, 2, 0x0, 1, 0, 3, 0x0
gsSP2Triangles 1, 3, 4, 0x0, 4, 3, 5, 0x0
gsSP2Triangles 4, 5, 6, 0x0, 6, 5, 7, 0x0
gsSP2Triangles 6, 7, 8, 0x0, 8, 7, 9, 0x0
gsSP2Triangles 8, 9, 10, 0x0, 10, 9, 11, 0x0
gsSP2Triangles 10, 11, 12, 0x0, 12, 11, 13, 0x0
gsSP2Triangles 12, 13, 14, 0x0, 14, 13, 15, 0x0
gsSPEndDisplayList

glabel amp_seg8_dl_08003DA8 # 0x08003DA8 - 0x08003DD8
gsSPLight amp_seg8_vertex_08002EE0 + 0x8, 1
gsSPLight amp_seg8_vertex_08002EE0, 2
gsSPVertex amp_seg8_vertex_08003860, 4, 0
gsSP2Triangles 0, 1, 2, 0x0, 0, 2, 3, 0x0
gsSPEndDisplayList

glabel amp_seg8_dl_08003DD8 # 0x08003DD8 - 0x08003E00
gsSPLight amp_seg8_vertex_08002EE0 + 0x8, 1
gsSPLight amp_seg8_vertex_08002EE0, 2
gsSPVertex amp_seg8_vertex_080038A0, 3, 0
gsSP1Triangle 0, 1, 2, 0x0
gsSPEndDisplayList

glabel amp_seg8_dl_08003E00 # 0x08003E00 - 0x08003E30
gsSPLight amp_seg8_vertex_08002EE0 + 0x8, 1
gsSPLight amp_seg8_vertex_08002EE0, 2
gsSPVertex amp_seg8_vertex_080038D0, 4, 0
gsSP2Triangles 0, 1, 2, 0x0, 0, 2, 3, 0x0
gsSPEndDisplayList

amp_seg8_animvalue_08003E30: # 0x08003E30
.hword 0x0000, 0x0000, 0x0D79, 0x1AF2, 0x286B, 0x35E4, 0x435D, 0x50D6
.hword 0x5E50, 0x6BC9, 0x7942, 0x86BE, 0x9437, 0xA1B0, 0xAF2A, 0xBCA3
.hword 0xCA1C, 0xD795, 0xE50E, 0xF287, 0x1872, 0x0000, 0x1AF2, 0x35E4
.hword 0x50D6, 0x6BC9, 0x86BE, 0xA1B0, 0xBCA3, 0xD795, 0xF287, 0x0D79
.hword 0x286B, 0x435D, 0x5E50, 0x7942, 0x9437, 0xAF2A, 0xCA1C, 0xE50E
.hword 0x0000, 0x1AF2, 0x35E4, 0x50D6, 0x6BC9, 0x86BE, 0xA1B0, 0xBCA3
.hword 0xD795, 0xF287, 0x0D79, 0x286B, 0x435D, 0x5E50, 0x7942, 0x9437
.hword 0xAF2A, 0xCA1C, 0xE50E, 0x8001, 0x5793, 0x2F28, 0x06BC, 0xDE52
.hword 0xB5E6, 0x8D7B, 0x650C, 0x3CA1, 0x1435, 0xEBCB, 0xC35F, 0x9AF4
.hword 0x7285, 0x4A1A, 0x21AE, 0xF944, 0xD0D8, 0xA86D, 0x3FFF, 0x0000
.hword 0x0D7C, 0x1AF9, 0x2876, 0x35F3, 0x4370, 0x50ED, 0x5E6A, 0x6BE7
.hword 0x7964, 0x86E3, 0x9460, 0xA1DD, 0xAF5A, 0xBCD7, 0xCA54, 0xD7D1
.hword 0xE54E, 0xF2CB, 0xC001, 0x3FFF, 0x0000, 0x0D7B, 0x1AF7, 0x2873
.hword 0x35EF, 0x436B, 0x50E6, 0x5E62, 0x6BDE, 0x795A, 0x86D9, 0x9455
.hword 0xA1D0, 0xAF4C, 0xBCC8, 0xCA44, 0xD7C0, 0xE53B, 0xF2B7, 0xC001
.hword 0x3FFF, 0xC001, 0xCD7A, 0xDAF2, 0xE86B, 0xF5E3, 0x035B, 0x10D3
.hword 0x1E4C, 0x2BC4, 0x393D, 0x46B5, 0x542E, 0x61A6, 0x6F1F, 0x7C97
.hword 0x8A13, 0x978B, 0xA504, 0xB27D, 0xC001, 0x3FFF, 0x4D79, 0x5AF2
.hword 0x686C, 0x75E5, 0x8362, 0x90DB, 0x9E55, 0xABCF, 0xB948, 0xC6C2
.hword 0xD43B, 0xE1B5, 0xEF2F, 0xFCA8, 0x0A21, 0x179A, 0x2514, 0x328D
.hword 0xC001, 0x3FFF

amp_seg8_animindex_08003F74: # 0x08003F74
.hword 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000
.hword 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000
.hword 0x0001, 0x00A1, 0x0001, 0x0000, 0x0013, 0x008D, 0x0001, 0x00A0
.hword 0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0001, 0x0001, 0x0000
.hword 0x0013, 0x0079, 0x0001, 0x008C, 0x0001, 0x0014, 0x0001, 0x0000
.hword 0x0013, 0x0015, 0x0001, 0x0000, 0x0013, 0x0064, 0x0001, 0x0077
.hword 0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0028, 0x0001, 0x0000
.hword 0x0013, 0x004F, 0x0001, 0x0062, 0x0001, 0x0000, 0x0001, 0x0000
.hword 0x0013, 0x003B, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0078
.hword 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0063, 0x0001, 0x0000
.hword 0x0001, 0x0000, 0x0001, 0x004E

amp_seg8_anim_0800401C: # 0x0800401C
.hword 0
.hword 0
.hword 0
.hword 0
.hword 0x13
.hword 0x0D
.word amp_seg8_animvalue_08003E30
.word amp_seg8_animindex_08003F74
.word 0

glabel amp_seg8_anims_08004034 # 0x08004034
.word amp_seg8_anim_0800401C

+ 36
- 0
actors/bird/anims/anim_050008D0.inc.c View File

@@ -0,0 +1,36 @@
// 0x050007E0
static const s16 birds_seg5_animvalue_050007E0[] = {
0x0000, 0x0013, 0x0017, 0x001A, 0x001E, 0x0022, 0x0020, 0x001A,
0xFFFF, 0x3FFF, 0x0888, 0x0695, 0x024C, 0xFE04, 0xFC12, 0xFF4D,
0x054D, 0x0000, 0xFF6C, 0xFE24, 0xFCDD, 0xFC48, 0xFD3F, 0xFF0A,
0x31C6, 0x228D, 0x010E, 0xDF90, 0xD056, 0xE999, 0x1883, 0x8001,
0x7F50, 0x7EC6, 0x7F88, 0x80B3, 0x816F, 0x80C8, 0xF778, 0xF8AE,
0xFB59, 0xFE04, 0xFF3A, 0xFD37, 0xF97B, 0x0000, 0x0098, 0x01E8,
0x0339, 0x03D1, 0x02D4, 0x00FD, 0x31C6, 0x22A8, 0x0165, 0xE023,
0xD104, 0xEA1A, 0x18B0, 0x3FFF, 0x3FFF, 0xC001, 0x3FFF, 0xC001,
0x3FFF, 0x8001, 0x7F50, 0x7EC6, 0x7F88, 0x80B3, 0x816F, 0x80C8,
};

// 0x05000870
static const u16 birds_seg5_animindex_5000870[] = {
0x0001, 0x0000, 0x0007, 0x0001, 0x0001, 0x0008, 0x0001, 0x0000, 0x0001, 0x0009, 0x0001, 0x0000,
0x0001, 0x0000, 0x0001, 0x0000, 0x0007, 0x0041,
0x0001, 0x003E, 0x0001, 0x003F, 0x0001, 0x0040,
0x0007, 0x000A, 0x0007, 0x0011, 0x0007, 0x0018,
0x0001, 0x003B, 0x0001, 0x003C, 0x0001, 0x003D,
0x0007, 0x0026, 0x0007, 0x002D, 0x0007, 0x0034,
0x0001, 0x0000, 0x0001, 0x0000, 0x0007, 0x001F,
};

// 0x050008D0
static const struct Animation birds_seg5_anim_050008D0 = {
0,
0,
0,
0,
0x07,
ANIMINDEX_NUMPARTS(birds_seg5_animindex_5000870),
birds_seg5_animvalue_050007E0,
birds_seg5_animindex_5000870,
0,
};

+ 36
- 0
actors/bird/anims/anim_050009D0.inc.c View File

@@ -0,0 +1,36 @@
// 0x050008E8
static const s16 birds_seg5_animvalue_050008E8[] = {
0x0000, 0x001A, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B,
0x001A, 0xFFFF, 0x3FFF, 0x024C, 0x0246, 0x023A, 0x0234, 0x0238,
0x0240, 0x0249, 0x024C, 0xFE24, 0xFE1D, 0xFE0F, 0xFE07, 0xFE0C,
0xFE16, 0xFE20, 0xFE24, 0x010E, 0x0195, 0x0290, 0x0317, 0x02C6,
0x0212, 0x015F, 0x010E, 0x7EC6, 0xFB59, 0xFB5E, 0xFB68, 0xFB6D,
0xFB6A, 0xFB63, 0xFB5C, 0xFB59, 0x01E8, 0x01F5, 0x020B, 0x0218,
0x0210, 0x0200, 0x01F0, 0x01E8, 0x0165, 0x01D1, 0x0299, 0x0304,
0x02C3, 0x0235, 0x01A6, 0x0165, 0x3FFF, 0x3FFF, 0xC001, 0x3FFF,
0xC001, 0x3FFF, 0x7EC6, 0x0000,
};

// 0x05000970
static const u16 birds_seg5_animindex_5000970[] = {
0x0001, 0x0000, 0x0008, 0x0001, 0x0001, 0x0009, 0x0001, 0x0000, 0x0001, 0x000A, 0x0001, 0x0000,
0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0042,
0x0001, 0x003F, 0x0001, 0x0040, 0x0001, 0x0041,
0x0008, 0x000B, 0x0008, 0x0013, 0x0008, 0x001B,
0x0001, 0x003C, 0x0001, 0x003D, 0x0001, 0x003E,
0x0008, 0x0024, 0x0008, 0x002C, 0x0008, 0x0034,
0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0023,
};

// 0x050009D0
static const struct Animation birds_seg5_anim_050009D0 = {
0,
0,
0,
0,
0x08,
ANIMINDEX_NUMPARTS(birds_seg5_animindex_5000970),
birds_seg5_animvalue_050008E8,
birds_seg5_animindex_5000970,
0,
};

+ 2
- 0
actors/bird/anims/data.inc.c View File

@@ -0,0 +1,2 @@
#include "anim_050008D0.inc.c"
#include "anim_050009D0.inc.c"

+ 5
- 0
actors/bird/anims/table.inc.c View File

@@ -0,0 +1,5 @@
// 0x050009E8
const struct Animation *const birds_seg5_anims_050009E8[] = {
&birds_seg5_anim_050008D0,
&birds_seg5_anim_050009D0,
};

+ 0
- 2
actors/bird/collision.s View File

@@ -1,2 +0,0 @@
# Birds


+ 25
- 0
actors/bird/geo.inc.c View File

@@ -0,0 +1,25 @@
// 0x0C000000
const GeoLayout birds_geo[] = {
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),
GEO_OPEN_NODE(),
GEO_SCALE(0x00, 16384),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000670),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 1, -12, 37, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000528),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 1, -12, -37, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000600),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000598),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
};

+ 0
- 23
actors/bird/geo.s View File

@@ -1,23 +0,0 @@
glabel birds_geo # 0x0C000000
geo_shadow SHADOW_CIRCLE_4_VERTS, 0x96, 100
geo_open_node
geo_scale 0x00, 16384
geo_open_node
geo_animated_part LAYER_OPAQUE, 0, 0, 0
geo_open_node
geo_animated_part LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000670
geo_open_node
geo_animated_part LAYER_OPAQUE, 1, -12, 37
geo_open_node
<