mirror of https://github.com/zeldaret/mm
Multiversion code support (n64-jp-1.1) (#1826)
* setup n64-jp-1.1 disasm * Add versions * New microcode * Bootstrap z_sram * Bootstrap ovl_file_choose * Bootstrap kaleido scope * Bootstrap BgHeavyBlock * MessageContext shift * SaveContext shift * ItemId shift * Fix `PLAYER_CSACTION` shift * format * Add JP only to Heavy Block Description * Makefile multi version comment --------- Co-authored-by: Tom Overton <tom.overton@outlook.com>
This commit is contained in:
parent
f6b17e2358
commit
7b96e58622
30
Makefile
30
Makefile
|
|
@ -35,7 +35,8 @@ endif
|
|||
|
||||
#### Defaults ####
|
||||
|
||||
# Target game version. Currently only the following version is supported:
|
||||
# Target game version. Currently only the following versions are supported:
|
||||
# n64-jp-1.1 N64 Japan 1.1 (WIP)
|
||||
# n64-us N64 USA (default)
|
||||
VERSION ?= n64-us
|
||||
# If COMPARE is 1, check the output md5sum after building
|
||||
|
|
@ -76,7 +77,9 @@ export LANG := C
|
|||
CFLAGS :=
|
||||
CPPFLAGS :=
|
||||
|
||||
ifeq ($(VERSION),n64-us)
|
||||
ifeq ($(VERSION),n64-jp-1.1)
|
||||
COMPARE := 0
|
||||
else ifeq ($(VERSION),n64-us)
|
||||
# Intentionally blank for now
|
||||
else
|
||||
$(error Unsupported version $(VERSION))
|
||||
|
|
@ -101,6 +104,10 @@ BUILD_DIR := build/$(VERSION)
|
|||
EXTRACTED_DIR := extracted/$(VERSION)
|
||||
EXPECTED_DIR := expected/$(BUILD_DIR)
|
||||
|
||||
VERSION_MACRO := $(shell echo $(VERSION) | tr a-z-. A-Z__)
|
||||
GAME_VERSION := -DMM_VERSION=$(VERSION_MACRO)
|
||||
|
||||
|
||||
#### Tools ####
|
||||
ifneq ($(shell type $(MIPS_BINUTILS_PREFIX)ld >/dev/null 2>/dev/null; echo $$?), 0)
|
||||
$(error Unable to find $(MIPS_BINUTILS_PREFIX)ld. Please install or build MIPS binutils, commonly mips-linux-gnu. (or set MIPS_BINUTILS_PREFIX if your MIPS binutils install uses another prefix))
|
||||
|
|
@ -201,6 +208,8 @@ SFCFLAGS := --matching
|
|||
# We can't use the C preprocessor for this because it won't substitute inside string literals.
|
||||
BUILD_DIR_REPLACE := sed -e 's|$$(BUILD_DIR)|$(BUILD_DIR)|g'
|
||||
|
||||
CPPFLAGS += $(GAME_VERSION)
|
||||
|
||||
GBI_DEFINES := -DF3DEX_GBI_2 -DF3DEX_GBI_PL -DGBI_DOWHILE
|
||||
|
||||
ifeq ($(COMPILER),gcc)
|
||||
|
|
@ -212,7 +221,7 @@ ifeq ($(COMPILER),gcc)
|
|||
WARNINGS := $(CC_CHECK_WARNINGS)
|
||||
ASFLAGS := -march=vr4300 -32 -G0 -no-pad-sections
|
||||
CCASFLAGS := $(GBI_DEFINES) -G 0 -nostdinc -march=vr4300 -mfix4300 -mabi=32 -mno-abicalls -fno-PIC -fno-common -Wa,-no-pad-sections
|
||||
COMMON_DEFINES := $(GBI_DEFINES)
|
||||
COMMON_DEFINES := $(GBI_DEFINES) $(GAME_VERSION)
|
||||
AS_DEFINES := $(COMMON_DEFINES) -DMIPSEB -D_LANGUAGE_ASSEMBLY -D_ULTRA64
|
||||
C_DEFINES := $(COMMON_DEFINES) -D_LANGUAGE_C
|
||||
ENDIAN :=
|
||||
|
|
@ -225,7 +234,7 @@ else
|
|||
WARNINGS := -fullwarn -verbose -woff 624,649,838,712,516,513,596,564,594,807
|
||||
ASFLAGS := -march=vr4300 -32 -G0 -no-pad-sections
|
||||
CCASFLAGS := $(GBI_DEFINES) -G 0 -non_shared -Xcpluscomm -nostdinc -Wab,-r4300_mul $(WARNINGS) -o32
|
||||
COMMON_DEFINES := -D_MIPS_SZLONG=32 $(GBI_DEFINES)
|
||||
COMMON_DEFINES := -D_MIPS_SZLONG=32 $(GBI_DEFINES) $(GAME_VERSION)
|
||||
AS_DEFINES := $(COMMON_DEFINES) -DMIPSEB -D_LANGUAGE_ASSEMBLY -D_ULTRA64
|
||||
C_DEFINES := $(COMMON_DEFINES) -D_LANGUAGE_C
|
||||
ENDIAN := -EB
|
||||
|
|
@ -558,9 +567,17 @@ setup:
|
|||
$(PYTHON) tools/extract_yars.py $(EXTRACTED_DIR)/baserom -v $(VERSION)
|
||||
|
||||
assets:
|
||||
ifeq ($(VERSION),n64-us)
|
||||
$(PYTHON) tools/extract_assets.py $(EXTRACTED_DIR)/baserom $(EXTRACTED_DIR)/assets -j$(N_THREADS) -Z Wno-hardcoded-pointer -v $(VERSION)
|
||||
$(PYTHON) tools/extract_text.py $(EXTRACTED_DIR)/baserom $(EXTRACTED_DIR)/text -v $(VERSION)
|
||||
$(PYTHON) tools/extract_audio.py -b $(EXTRACTED_DIR)/baserom -o $(EXTRACTED_DIR) -v $(VERSION) --read-xml
|
||||
else
|
||||
# For non US versions just extract from the US rom
|
||||
$(PYTHON) tools/extract_assets.py extracted/n64-us/baserom $(EXTRACTED_DIR)/assets -j$(N_THREADS) -Z Wno-hardcoded-pointer -v n64-us
|
||||
$(PYTHON) tools/extract_text.py extracted/n64-us/baserom $(EXTRACTED_DIR)/text -v n64-us
|
||||
$(PYTHON) tools/extract_audio.py -b extracted/n64-us/baserom -o $(EXTRACTED_DIR) -v n64-us --read-xml
|
||||
endif
|
||||
|
||||
|
||||
## Assembly generation
|
||||
disasm:
|
||||
|
|
@ -570,7 +587,12 @@ disasm:
|
|||
diff-init: rom
|
||||
$(RM) -r $(EXPECTED_DIR)
|
||||
mkdir -p $(EXPECTED_DIR)
|
||||
ifneq ($(COMPARE),0)
|
||||
# If we could compare the rom successfully just copy from build
|
||||
cp -r $(BUILD_DIR)/. $(EXPECTED_DIR)
|
||||
else
|
||||
VERSION=$(VERSION) DISASM_DIR=$(EXTRACTED_DIR)/asm ASSEMBLE_DIR=$(EXPECTED_DIR) AS_CMD='$(AS) $(ASFLAGS) $(IINC)' LD=$(LD) ./tools/disasm/do_assemble.sh
|
||||
endif
|
||||
|
||||
init: distclean
|
||||
$(MAKE) venv
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
c38a7f6f6b61862ea383a75cdf888279 build/n64-jp-1.1/mm-n64-jp-1.1-compressed.z64
|
||||
|
|
@ -0,0 +1 @@
|
|||
2052c9070d3101fc0a73daf48c834d16 build/n64-jp-1.1/mm-n64-jp-1.1.z64
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
dmadata_start: 0x1C050
|
||||
variables:
|
||||
sMessageTableJPN: 0x801C1C48
|
||||
sMessageTableCredits: 0x801CA9D8
|
||||
gSoundFontTable: 0x801DFA80
|
||||
gSequenceFontTable: 0x801DFD10
|
||||
gSequenceTable: 0x801DFF20
|
||||
gSampleBankTable: 0x801E0730
|
||||
archives:
|
||||
- map_i_static
|
||||
- map_grand_static
|
||||
- item_name_static
|
||||
- map_name_static
|
||||
- icon_item_static_yar
|
||||
incbins:
|
||||
- name: ipl3
|
||||
segment: makerom
|
||||
vram: 0x8007F040
|
||||
size: 0xFC0
|
||||
- name: rspbootText
|
||||
segment: boot
|
||||
vram: 0x800978C0
|
||||
size: 0x160
|
||||
- name: cic6105Text
|
||||
segment: boot
|
||||
vram: 0x80097A20
|
||||
size: 0x20
|
||||
- name: aspMainText
|
||||
segment: code
|
||||
vram: 0x801A5BD0
|
||||
size: 0xFB0
|
||||
- name: gspS2DEX2_fifoText
|
||||
segment: code
|
||||
vram: 0x801A6B80
|
||||
size: 0x18C0
|
||||
- name: njpgdspMainText
|
||||
segment: code
|
||||
vram: 0x801A8440
|
||||
size: 0xAF0
|
||||
- name: aspMainData
|
||||
segment: code
|
||||
vram: 0x801E0770
|
||||
size: 0x2E0
|
||||
- name: gspF3DZEX2_NoN_PosLight_fifo_legacyText
|
||||
segment: code
|
||||
vram: 0x801E0A50
|
||||
size: 0x1390
|
||||
- name: gspF3DZEX2_NoN_PosLight_fifo_legacyData
|
||||
segment: code
|
||||
vram: 0x801E1DE0
|
||||
size: 0x420
|
||||
- name: gspF3DZEX2_NoN_PosLight_fifoText
|
||||
segment: code
|
||||
vram: 0x801E2200
|
||||
size: 0x1630
|
||||
- name: gspF3DZEX2_NoN_PosLight_fifoData
|
||||
segment: code
|
||||
vram: 0x801E3830
|
||||
size: 0x420
|
||||
- name: gspS2DEX2_fifoData
|
||||
segment: code
|
||||
vram: 0x801E3C50
|
||||
size: 0x390
|
||||
- name: njpgdspMainData
|
||||
segment: code
|
||||
vram: 0x801E3FE0
|
||||
size: 0x60
|
||||
- name: aspMainStack
|
||||
segment: code
|
||||
vram: 0x801D0BC0
|
||||
size: 0x400
|
||||
assets:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,9 +1,12 @@
|
|||
#!/usr/bin/env python3
|
||||
def add_custom_arguments(parser):
|
||||
parser.add_argument("-v", "--version", dest="mm_version", help="MM version", default="n64-jp-1.1")
|
||||
|
||||
def apply(config, args):
|
||||
config['baseimg'] = 'baseroms/n64-us/baserom-decompressed.z64'
|
||||
config['myimg'] = 'build/n64-us/mm-n64-us.z64'
|
||||
config['mapfile'] = 'build/n64-us/mm-n64-us.map'
|
||||
config['source_directories'] = ['./src','./include']
|
||||
version = args.mm_version
|
||||
config['baseimg'] = f'baseroms/{version}/baserom-decompressed.z64'
|
||||
config['myimg'] = f'build/{version}/mm-{version}.z64'
|
||||
config['mapfile'] = f'build/{version}/mm-{version}.map'
|
||||
config['source_directories'] = ['src', 'include', 'spec']
|
||||
config['objdump_flags'] = ['-M','reg-names=32']
|
||||
config['makeflags'] = ['KEEP_MDEBUG=1', 'WERROR=0', 'OBJDUMP_BUILD=0']
|
||||
config['makeflags'] = [f'VERSION={version}', 'KEEP_MDEBUG=1', 'WERROR=0', 'OBJDUMP_BUILD=0']
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
*
|
||||
* DEFINE_ACTOR_UNSET is needed to define empty entries from the original game
|
||||
*/
|
||||
#include "versions.h"
|
||||
/* 0x000 */ DEFINE_ACTOR_INTERNAL(Player, ACTOR_PLAYER, ALLOCTYPE_NORMAL, "Player")
|
||||
/* 0x001 */ DEFINE_ACTOR(En_Test, ACTOR_EN_TEST, ALLOCTYPE_NORMAL, "En_Test")
|
||||
/* 0x002 */ DEFINE_ACTOR(En_GirlA, ACTOR_EN_GIRLA, ALLOCTYPE_NORMAL, "En_GirlA")
|
||||
|
|
@ -89,7 +90,11 @@
|
|||
/* 0x04B */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_4B)
|
||||
/* 0x04C */ DEFINE_ACTOR(En_Rd, ACTOR_EN_RD, ALLOCTYPE_NORMAL, "En_Rd")
|
||||
/* 0x04D */ DEFINE_ACTOR(Bg_F40_Flift, ACTOR_BG_F40_FLIFT, ALLOCTYPE_NORMAL, "Bg_F40_Flift")
|
||||
/* 0x04E */ DEFINE_ACTOR_UNSET(ACTOR_UNSET_4E)
|
||||
#if MM_VERSION >= N64_US
|
||||
/* 0x04E */ DEFINE_ACTOR_UNSET(ACTOR_BG_HEAVY_BLOCK)
|
||||
#else
|
||||
/* 0x04E */ DEFINE_ACTOR(Bg_Heavy_Block, ACTOR_BG_HEAVY_BLOCK, ALLOCTYPE_NORMAL, "Bg_Heavy_Block")
|
||||
#endif
|
||||
/* 0x04F */ DEFINE_ACTOR(Obj_Mure, ACTOR_OBJ_MURE, ALLOCTYPE_NORMAL, "Obj_Mure")
|
||||
/* 0x050 */ DEFINE_ACTOR(En_Sw, ACTOR_EN_SW, ALLOCTYPE_NORMAL, "En_Sw")
|
||||
/* 0x051 */ DEFINE_ACTOR(Object_Kankyo, ACTOR_OBJECT_KANKYO, ALLOCTYPE_NORMAL, "Object_Kankyo")
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef VERSIONS_H
|
||||
#define VERSIONS_H
|
||||
|
||||
// MM versions in build order
|
||||
|
||||
#define N64_JP_1_1 2
|
||||
#define N64_US 4
|
||||
|
||||
#endif
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef Z64ITEM_H
|
||||
#define Z64ITEM_H
|
||||
|
||||
#include "versions.h"
|
||||
|
||||
#define DROP_TABLE_SIZE 16
|
||||
#define DROP_TABLE_NUMBER 17
|
||||
|
||||
|
|
@ -180,19 +182,57 @@ typedef enum ItemId {
|
|||
/* 0x21 */ ITEM_ZORA_EGG,
|
||||
/* 0x22 */ ITEM_GOLD_DUST,
|
||||
/* 0x23 */ ITEM_MUSHROOM,
|
||||
#if MM_VERSION < N64_US
|
||||
ITEM_24_JP,
|
||||
ITEM_25_JP,
|
||||
#endif
|
||||
/* 0x24 */ ITEM_SEAHORSE,
|
||||
/* 0x25 */ ITEM_CHATEAU,
|
||||
/* 0x26 */ ITEM_HYLIAN_LOACH,
|
||||
#if MM_VERSION < N64_US
|
||||
ITEM_29_JP,
|
||||
ITEM_2A_JP,
|
||||
ITEM_2B_JP,
|
||||
ITEM_2C_JP,
|
||||
ITEM_2D_JP,
|
||||
ITEM_2E_JP,
|
||||
#endif
|
||||
/* 0x27 */ ITEM_OBABA_DRINK,
|
||||
/* 0x28 */ ITEM_MOONS_TEAR,
|
||||
/* 0x29 */ ITEM_DEED_LAND,
|
||||
/* 0x2A */ ITEM_DEED_SWAMP,
|
||||
/* 0x2B */ ITEM_DEED_MOUNTAIN,
|
||||
/* 0x2C */ ITEM_DEED_OCEAN,
|
||||
#if MM_VERSION < N64_US
|
||||
ITEM_35_JP,
|
||||
ITEM_36_JP,
|
||||
ITEM_37_JP,
|
||||
ITEM_38_JP,
|
||||
ITEM_39_JP,
|
||||
#endif
|
||||
/* 0x2D */ ITEM_ROOM_KEY,
|
||||
/* 0x2E */ ITEM_LETTER_MAMA,
|
||||
#if MM_VERSION < N64_US
|
||||
ITEM_3C_JP,
|
||||
ITEM_3D_JP,
|
||||
ITEM_3E_JP,
|
||||
ITEM_3F_JP,
|
||||
ITEM_40_JP,
|
||||
ITEM_41_JP,
|
||||
ITEM_42_JP,
|
||||
ITEM_43_JP,
|
||||
#endif
|
||||
/* 0x2F */ ITEM_LETTER_TO_KAFEI,
|
||||
/* 0x30 */ ITEM_PENDANT_OF_MEMORIES,
|
||||
#if MM_VERSION < N64_US
|
||||
ITEM_46_JP,
|
||||
ITEM_47_JP,
|
||||
ITEM_48_JP,
|
||||
ITEM_49_JP,
|
||||
ITEM_4A_JP,
|
||||
ITEM_4B_JP,
|
||||
ITEM_4C_JP,
|
||||
#endif
|
||||
/* 0x31 */ ITEM_TINGLE_MAP,
|
||||
/* 0x32 */ ITEM_MASK_DEKU,
|
||||
/* 0x33 */ ITEM_MASK_GORON,
|
||||
|
|
@ -221,12 +261,20 @@ typedef enum ItemId {
|
|||
/* 0x4A */ ITEM_BOW_FIRE,
|
||||
/* 0x4B */ ITEM_BOW_ICE,
|
||||
/* 0x4C */ ITEM_BOW_LIGHT,
|
||||
#if MM_VERSION < N64_US
|
||||
ITEM_69_JP,
|
||||
ITEM_6A_JP,
|
||||
ITEM_6B_JP,
|
||||
#endif
|
||||
/* 0x4D */ ITEM_SWORD_KOKIRI,
|
||||
/* 0x4E */ ITEM_SWORD_RAZOR,
|
||||
/* 0x4F */ ITEM_SWORD_GILDED,
|
||||
/* 0x50 */ ITEM_SWORD_DEITY,
|
||||
/* 0x51 */ ITEM_SHIELD_HERO,
|
||||
/* 0x52 */ ITEM_SHIELD_MIRROR,
|
||||
#if MM_VERSION < N64_US
|
||||
ITEM_72_JP,
|
||||
#endif
|
||||
/* 0x53 */ ITEM_QUIVER_30,
|
||||
/* 0x54 */ ITEM_QUIVER_40,
|
||||
/* 0x55 */ ITEM_QUIVER_50,
|
||||
|
|
@ -326,7 +374,11 @@ typedef enum ItemId {
|
|||
/* 0xB1 */ ITEM_MAP_POINT_MOUNTAIN_VILLAGE,
|
||||
/* 0xB2 */ ITEM_MAP_POINT_MILK_ROAD,
|
||||
/* 0xB3 */ ITEM_MAP_POINT_ZORA_CAPE,
|
||||
/* 0xB8 */ ITEM_B8 = 0xB8,
|
||||
/* 0xB4 */ ITEM_B4,
|
||||
/* 0xB5 */ ITEM_B5,
|
||||
/* 0xB6 */ ITEM_B6,
|
||||
/* 0xB7 */ ITEM_B7,
|
||||
/* 0xB8 */ ITEM_B8,
|
||||
/* 0xB9 */ ITEM_B9,
|
||||
/* 0xBA */ ITEM_BA,
|
||||
/* 0xBB */ ITEM_BB,
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
#include "PR/ultratypes.h"
|
||||
#include "stdbool.h"
|
||||
|
||||
#include "versions.h"
|
||||
|
||||
#include "z64bombers_notebook.h"
|
||||
#include "z64font.h"
|
||||
#include "z64view.h"
|
||||
|
|
@ -269,7 +271,9 @@ typedef struct MessageContext {
|
|||
/* 0x1207C */ s32 rupeesTotal; // Used for bank and doggy racetrack bet
|
||||
/* 0x12080 */ struct MessageTableEntry* messageTable;
|
||||
/* 0x12084 */ struct MessageTableEntry* messageTableNES;
|
||||
#if MM_VERSION >= N64_US
|
||||
/* 0x12088 */ UNK_TYPE1 unk12088[0x4];
|
||||
#endif
|
||||
/* 0x1208C */ struct MessageTableEntry* messageTableCredits;
|
||||
/* 0x12090 */ s16 textIsCredits;
|
||||
/* 0x12092 */ s16 messageHasSetSfx;
|
||||
|
|
@ -287,6 +291,7 @@ typedef struct MessageContext {
|
|||
/* 0x120B1 */ u8 bombersNotebookEventQueueCount;
|
||||
/* 0x120B2 */ u8 bombersNotebookEventQueue[10];
|
||||
/* 0x120BC */ u16 hudVisibility;
|
||||
#if MM_VERSION >= N64_US
|
||||
/* 0x120BE */ s16 unk120BE;
|
||||
/* 0x120C0 */ s16 unk120C0;
|
||||
/* 0x120C2 */ s16 unk120C2;
|
||||
|
|
@ -301,6 +306,7 @@ typedef struct MessageContext {
|
|||
/* 0x120D6 */ s16 unk120D6;
|
||||
/* 0x120D8 */ s16 unk120D8;
|
||||
/* 0x120DA */ UNK_TYPE1 unk_120DA[0x6];
|
||||
#endif
|
||||
} MessageContext; // size = 0x120E0
|
||||
|
||||
bool Message_ShouldAdvance(struct PlayState* play);
|
||||
|
|
|
|||
|
|
@ -790,7 +790,9 @@ typedef enum PlayerCsAction {
|
|||
/* 0x77 */ PLAYER_CSACTION_119,
|
||||
/* 0x78 */ PLAYER_CSACTION_120,
|
||||
/* 0x79 */ PLAYER_CSACTION_121,
|
||||
#if MM_VERSION >= N64_US
|
||||
/* 0x7A */ PLAYER_CSACTION_122,
|
||||
#endif
|
||||
/* 0x7B */ PLAYER_CSACTION_123,
|
||||
/* 0x7C */ PLAYER_CSACTION_124,
|
||||
/* 0x7D */ PLAYER_CSACTION_125,
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
#include "ultra64.h"
|
||||
#include "PR/os.h"
|
||||
|
||||
#include "versions.h"
|
||||
|
||||
#include "z64inventory.h"
|
||||
#include "z64item.h"
|
||||
#include "z64math.h"
|
||||
|
|
@ -307,6 +309,9 @@ typedef struct SaveInfo {
|
|||
/* 0xED4 */ u8 weekEventReg[100]; // "week_event_reg"
|
||||
/* 0xF38 */ u32 regionsVisited; // "area_arrival"
|
||||
/* 0xF3C */ u32 worldMapCloudVisibility; // "cloud_clear"
|
||||
#if MM_VERSION < N64_US
|
||||
UNK_TYPE1 unk_F40_jp[0x384];
|
||||
#endif
|
||||
/* 0xF40 */ u8 unk_F40; // "oca_rec_flag" has scarecrows song
|
||||
/* 0xF41 */ u8 scarecrowSpawnSongSet; // "oca_rec_flag8"
|
||||
/* 0xF42 */ u8 scarecrowSpawnSong[128];
|
||||
|
|
@ -341,6 +346,7 @@ typedef struct Save {
|
|||
|
||||
typedef struct SaveContext {
|
||||
/* 0x0000 */ Save save;
|
||||
#if MM_VERSION >= N64_US
|
||||
/* 0x100C */ u8 eventInf[8]; // "event_inf"
|
||||
/* 0x1014 */ u8 unk_1014; // "stone_set_flag"
|
||||
/* 0x1015 */ u8 bButtonStatus;
|
||||
|
|
@ -395,6 +401,62 @@ typedef struct SaveContext {
|
|||
/* 0x3F30 */ s16 magicFillTarget; // target used to fill magic "magic_now_now"
|
||||
/* 0x3F32 */ s16 magicToConsume; // accumulated magic that is requested to be consumed "magic_used"
|
||||
/* 0x3F34 */ s16 magicToAdd; // accumulated magic that is requested to be added "magic_recovery"
|
||||
#else
|
||||
u8 pictoPhotoI5[PICTO_PHOTO_COMPRESSED_SIZE]; // buffer containing the pictograph photo, compressed to I5 from I8
|
||||
s32 fileNum; // "file_no"
|
||||
s16 powderKegTimer; // "big_bom_timer"
|
||||
u8 unk_1014; // "stone_set_flag"
|
||||
u8 unk_3CA7; // "day_night_flag"
|
||||
u16 jinxTimer;
|
||||
u8 unk_3CA6;
|
||||
u8 bButtonStatus;
|
||||
s32 gameMode; // "mode"
|
||||
s32 sceneLayer; // "counter"
|
||||
s32 respawnFlag; // "restart_flag"
|
||||
RespawnData respawn[RESPAWN_MODE_MAX]; // "restart_data"
|
||||
f32 entranceSpeed; // "player_wipe_speedF"
|
||||
u16 entranceSound; // "player_wipe_door_SE"
|
||||
u8 unk_3DBA; // "player_wipe_item"
|
||||
u8 retainWeatherMode; // "next_walk"
|
||||
s16 dogParams; // OoT leftover. "dog_flag"
|
||||
u8 envHazardTextTriggerFlags; // "guide_status"
|
||||
u8 showTitleCard; // "name_display"
|
||||
s16 nayrusLoveTimer; // remnant of OoT, "shield_magic_timer"
|
||||
u8 unk_3DC2; // "pad1"
|
||||
s16 rupeeAccumulator; // "lupy_udct"
|
||||
OSTime postmanTimerStopOsTime; // The osTime when the timer stops for the postman minigame. "get_time"
|
||||
u8 timerStates[TIMER_ID_MAX]; // See the `TimerState` enum. "event_fg"
|
||||
u8 timerDirections[TIMER_ID_MAX]; // See the `TimerDirection` enum. "calc_flag"
|
||||
u64 timerCurTimes[TIMER_ID_MAX]; // For countdown, the remaining time left. For countup, the time since the start. In centiseconds (1/100th sec). "event_ostime"
|
||||
u64 timerTimeLimits[TIMER_ID_MAX]; // The original total time given for the timer to count from, in centiseconds (1/100th sec). "event_sub"
|
||||
OSTime timerStartOsTimes[TIMER_ID_MAX]; // The osTime when the timer starts. "func_time"
|
||||
u64 timerStopTimes[TIMER_ID_MAX]; // The total amount of time taken between the start and end of the timer, in centiseconds (1/100th sec). "func_end_time"
|
||||
OSTime timerPausedOsTimes[TIMER_ID_MAX]; // The cumulative osTime spent with the timer paused. "func_stop_time"
|
||||
s16 timerX[TIMER_ID_MAX]; // "event_xp"
|
||||
s16 timerY[TIMER_ID_MAX]; // "event_yp"
|
||||
u8 bottleTimerStates[BOTTLE_MAX]; // See the `BottleTimerState` enum. "bottle_status"
|
||||
OSTime bottleTimerStartOsTimes[BOTTLE_MAX]; // The osTime when the timer starts. "bottle_ostime"
|
||||
u64 bottleTimerTimeLimits[BOTTLE_MAX]; // The original total time given before the timer expires, in centiseconds (1/100th sec). "bottle_sub"
|
||||
u64 bottleTimerCurTimes[BOTTLE_MAX]; // The remaining time left before the timer expires, in centiseconds (1/100th sec). "bottle_time"
|
||||
OSTime bottleTimerPausedOsTimes[BOTTLE_MAX]; // The cumulative osTime spent with the timer paused. "bottle_stop_time"
|
||||
s16 unk_3F14; // "character_change"
|
||||
u8 seqId; // "old_bgm"
|
||||
u8 ambienceId; // "old_env"
|
||||
u8 buttonStatus[6]; // "button_item"
|
||||
u8 hudVisibilityForceButtonAlphasByStatus; // if btn alphas are updated through Interface_UpdateButtonAlphas, instead update them through Interface_UpdateButtonAlphasByStatus "ck_fg"
|
||||
u16 nextHudVisibility; // triggers the hud to change visibility to the requested value. Reset to HUD_VISIBILITY_IDLE when target is reached "alpha_type"
|
||||
u16 hudVisibility; // current hud visibility "prev_alpha_type"
|
||||
u16 hudVisibilityTimer; // number of frames in the transition to a new hud visibility. Used to step alpha "alpha_count"
|
||||
u16 prevHudVisibility; // used to store and recover hud visibility for pause menu and text boxes "last_time_type"
|
||||
s16 magicState; // determines magic meter behavior on each frame "magic_flag"
|
||||
s16 isMagicRequested; // a request to add magic has been given "recovery_magic_flag"
|
||||
s16 magicFlag; // Set to 0 in func_80812D94(), otherwise unused "keep_magic_flag"
|
||||
s16 magicCapacity; // maximum magic available "magic_now_max"
|
||||
s16 magicFillTarget; // target used to fill magic "magic_now_now"
|
||||
s16 magicToConsume; // accumulated magic that is requested to be consumed "magic_used"
|
||||
s16 magicToAdd; // accumulated magic that is requested to be added "magic_recovery"
|
||||
u8 eventInf[8]; // "event_inf"
|
||||
#endif
|
||||
/* 0x3F36 */ u16 mapIndex; // set to enum DungeonSceneIndex when entering a dungeon related scene, or Map_GetMapIndexForOverworld on certain overworld scenes "scene_ID"
|
||||
/* 0x3F38 */ u16 minigameStatus; // "yabusame_mode"
|
||||
/* 0x3F3A */ u16 minigameScore; // "yabusame_total"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
.include "macro.inc"
|
||||
|
||||
.section .text
|
||||
|
||||
.balign 16
|
||||
|
||||
glabel cic6105TextStart
|
||||
.incbin "incbin/cic6105Text"
|
||||
endlabel cic6105TextStart
|
||||
dlabel cic6105TextEnd
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
.include "macro.inc"
|
||||
|
||||
.section .rodata
|
||||
|
||||
.balign 16
|
||||
|
||||
dlabel gspF3DZEX2_NoN_PosLight_fifo_legacyTextStart
|
||||
.incbin "incbin/gspF3DZEX2_NoN_PosLight_fifo_legacyText"
|
||||
dlabel gspF3DZEX2_NoN_PosLight_fifo_legacyTextEnd
|
||||
|
||||
.section .rodata
|
||||
|
||||
.balign 16
|
||||
|
||||
dlabel gspF3DZEX2_NoN_PosLight_fifo_legacyDataStart
|
||||
.incbin "incbin/gspF3DZEX2_NoN_PosLight_fifo_legacyData"
|
||||
dlabel gspF3DZEX2_NoN_PosLight_fifo_legacyDataEnd
|
||||
34
spec/spec
34
spec/spec
|
|
@ -2,6 +2,8 @@
|
|||
* ROM spec file
|
||||
*/
|
||||
|
||||
#include "include/versions.h"
|
||||
|
||||
beginseg
|
||||
name "framebuffer_lo"
|
||||
address 0x80000500
|
||||
|
|
@ -229,7 +231,9 @@ beginseg
|
|||
include "$(BUILD_DIR)/src/boot/libc/memmove.o"
|
||||
include "$(BUILD_DIR)/src/boot/build.o"
|
||||
include "$(BUILD_DIR)/rsp/rspboot.o"
|
||||
|
||||
#if MM_VERSION < N64_US
|
||||
include "$(BUILD_DIR)/rsp/cic6105.o"
|
||||
#endif
|
||||
#ifdef COMPILER_GCC
|
||||
include "$(BUILD_DIR)/src/gcc_fix/missing_gcc_functions.o"
|
||||
#endif
|
||||
|
|
@ -675,6 +679,9 @@ beginseg
|
|||
include "$(BUILD_DIR)/src/code/z_snap.o"
|
||||
include "$(BUILD_DIR)/src/code/z_sub_s.o"
|
||||
include "$(BUILD_DIR)/src/code/z_circle_tex.o"
|
||||
#if MM_VERSION < N64_US
|
||||
include "$(BUILD_DIR)/src/code/z_sram_JPN.o"
|
||||
#endif
|
||||
include "$(BUILD_DIR)/src/code/z_rumble.o"
|
||||
include "$(BUILD_DIR)/src/code/z_view.o"
|
||||
include "$(BUILD_DIR)/src/code/z_vimode.o"
|
||||
|
|
@ -684,9 +691,13 @@ beginseg
|
|||
include "$(BUILD_DIR)/src/code/z_viszbuf.o"
|
||||
include "$(BUILD_DIR)/src/code/z_vr_box.o"
|
||||
include "$(BUILD_DIR)/src/code/z_vr_box_draw.o"
|
||||
#if MM_VERSION >= N64_US
|
||||
include "$(BUILD_DIR)/src/code/z_sram_NES.o"
|
||||
#endif
|
||||
include "$(BUILD_DIR)/src/code/z_message.o"
|
||||
#if MM_VERSION >= N64_US
|
||||
include "$(BUILD_DIR)/src/code/z_message_nes.o"
|
||||
#endif
|
||||
include "$(BUILD_DIR)/src/code/z_message_staff.o"
|
||||
include "$(BUILD_DIR)/src/code/z_player_call.o"
|
||||
include "$(BUILD_DIR)/src/code/z_shrink_window.o"
|
||||
|
|
@ -765,6 +776,9 @@ beginseg
|
|||
include "$(BUILD_DIR)/src/audio/tables/sequence_table.o"
|
||||
include "$(BUILD_DIR)/src/audio/tables/samplebank_table.o"
|
||||
include "$(BUILD_DIR)/rsp/aspMain.o"
|
||||
#if MM_VERSION < N64_US
|
||||
include "$(BUILD_DIR)/rsp/gspF3DZEX2.NoN.PosLight.fifo_legacy.o"
|
||||
#endif
|
||||
include "$(BUILD_DIR)/rsp/gspF3DZEX2.NoN.PosLight.fifo.o"
|
||||
include "$(BUILD_DIR)/rsp/gspS2DEX2.fifo.o"
|
||||
include "$(BUILD_DIR)/rsp/njpgdspMain.o"
|
||||
|
|
@ -814,8 +828,13 @@ beginseg
|
|||
compress
|
||||
include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_nameset_data.o"
|
||||
include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.o"
|
||||
#if MM_VERSION >= N64_US
|
||||
include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.o"
|
||||
include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_choose_NES.o"
|
||||
#else
|
||||
include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_nameset_JPN.o"
|
||||
include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_choose_JPN.o"
|
||||
#endif
|
||||
include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/ovl_file_choose_reloc.o"
|
||||
endseg
|
||||
|
||||
|
|
@ -835,7 +854,11 @@ beginseg
|
|||
include "$(BUILD_DIR)/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_map.o"
|
||||
include "$(BUILD_DIR)/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.o"
|
||||
include "$(BUILD_DIR)/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_prompt.o"
|
||||
#if MM_VERSION >= N64_US
|
||||
include "$(BUILD_DIR)/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.o"
|
||||
#else
|
||||
include "$(BUILD_DIR)/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_JPN.o"
|
||||
#endif
|
||||
include "$(BUILD_DIR)/src/overlays/kaleido_scope/ovl_kaleido_scope/ovl_kaleido_scope_reloc.o"
|
||||
endseg
|
||||
|
||||
|
|
@ -1238,6 +1261,15 @@ beginseg
|
|||
include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_F40_Flift/ovl_Bg_F40_Flift_reloc.o"
|
||||
endseg
|
||||
|
||||
#if MM_VERSION < N64_US
|
||||
beginseg
|
||||
name "ovl_Bg_Heavy_Block"
|
||||
compress
|
||||
include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.o"
|
||||
include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Heavy_Block/ovl_Bg_Heavy_Block_reloc.o"
|
||||
endseg
|
||||
#endif
|
||||
|
||||
beginseg
|
||||
name "ovl_Obj_Mure"
|
||||
compress
|
||||
|
|
|
|||
|
|
@ -15,10 +15,55 @@
|
|||
|
||||
#include "assets/interface/parameter_static/parameter_static.h"
|
||||
|
||||
#if MM_VERSION >= N64_US
|
||||
#define MESSAGE_DECODE(play) Message_DecodeNES(play)
|
||||
#define MESSAGE_DRAW_TEXT(play, gfxP, drawPos) Message_DrawTextNES(play, gfxP, drawPos)
|
||||
#else
|
||||
#define MESSAGE_DECODE(play) Message_Decode(play)
|
||||
#define MESSAGE_DRAW_TEXT(play, gfxP, drawPos) Message_DrawTextDefault(play, gfxP)
|
||||
#endif
|
||||
|
||||
u8 D_801C6A70 = 0;
|
||||
s16 sOcarinaButtonIndexBufPos = 0;
|
||||
s16 sOcarinaButtonIndexBufLen = 0;
|
||||
s16 sLastPlayedSong = 0xFF;
|
||||
|
||||
#if MM_VERSION >= N64_US
|
||||
#define MSGCTX_UNK120BE msgCtx->unk120BE
|
||||
#define MSGCTX_UNK120C0 msgCtx->unk120C0
|
||||
#define MSGCTX_UNK120C2 msgCtx->unk120C2
|
||||
#define MSGCTX_UNK120C4 msgCtx->unk120C4
|
||||
#define MSGCTX_UNK120C8 msgCtx->unk120C8
|
||||
#define MSGCTX_UNK120CA msgCtx->unk120CA
|
||||
#define MSGCTX_UNK120CC msgCtx->unk120CC
|
||||
#define MSGCTX_UNK120CE msgCtx->unk120CE
|
||||
#define MSGCTX_UNK120D0 msgCtx->unk120D0
|
||||
#define MSGCTX_UNK120D2 msgCtx->unk120D2
|
||||
#else
|
||||
|
||||
s16 D_801C1B00_unknown = 0;
|
||||
s16 D_801C1B04_unknown = 0;
|
||||
s16 D_801C1B08_unknown = 0;
|
||||
s32 D_801C1B0C_unknown = 0;
|
||||
s16 D_801C1B10_unknown = 0;
|
||||
s16 D_801C1B14_unknown = 0;
|
||||
s16 D_801C1B18_unknown = 0;
|
||||
s16 D_801C1B1C_unknown = 0;
|
||||
s16 D_801C1B20_unknown = 0;
|
||||
s16 D_801C1B24_unknown = 0;
|
||||
|
||||
#define MSGCTX_UNK120BE D_801C1B00_unknown
|
||||
#define MSGCTX_UNK120C0 D_801C1B04_unknown
|
||||
#define MSGCTX_UNK120C2 D_801C1B08_unknown
|
||||
#define MSGCTX_UNK120C4 D_801C1B0C_unknown
|
||||
#define MSGCTX_UNK120C8 D_801C1B10_unknown
|
||||
#define MSGCTX_UNK120CA D_801C1B14_unknown
|
||||
#define MSGCTX_UNK120CC D_801C1B18_unknown
|
||||
#define MSGCTX_UNK120CE D_801C1B1C_unknown
|
||||
#define MSGCTX_UNK120D0 D_801C1B20_unknown
|
||||
#define MSGCTX_UNK120D2 D_801C1B24_unknown
|
||||
#endif
|
||||
|
||||
s16 sOcarinaButtonStepR = 0;
|
||||
s16 sOcarinaButtonStepG = 0;
|
||||
s16 sOcarinaButtonStepB = 0;
|
||||
|
|
@ -26,6 +71,19 @@ s16 sOcarinaButtonFlashTimer = 12;
|
|||
s16 sOcarinaButtonFlashColorIndex = 1;
|
||||
s16 D_801C6A94 = 0;
|
||||
|
||||
#if MM_VERSION >= N64_US
|
||||
#define MSGCTX_UNK120D4 msgCtx->unk120D4
|
||||
#define MSGCTX_UNK120D6 msgCtx->unk120D6
|
||||
#else
|
||||
|
||||
s16 D_801C1B40_unknown = 0;
|
||||
s16 D_801C1B44_unknown = 0;
|
||||
|
||||
#define MSGCTX_UNK120D4 D_801C1B40_unknown
|
||||
#define MSGCTX_UNK120D6 D_801C1B44_unknown
|
||||
|
||||
#endif
|
||||
|
||||
u8 gPageSwitchNextButtonStatus[][5] = {
|
||||
{ BTN_ENABLED, BTN_ENABLED, BTN_DISABLED, BTN_ENABLED, BTN_ENABLED },
|
||||
{ BTN_ENABLED, BTN_ENABLED, BTN_DISABLED, BTN_ENABLED, BTN_ENABLED },
|
||||
|
|
@ -544,34 +602,34 @@ void func_80148D64(PlayState* play) {
|
|||
MessageContext* msgCtx = &play->msgCtx;
|
||||
|
||||
if (play->msgCtx.stickAdjY <= -30) {
|
||||
msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2]--;
|
||||
if (msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2] < '0') {
|
||||
msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2] = '9';
|
||||
msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2]--;
|
||||
if (msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2] < '0') {
|
||||
msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2] = '9';
|
||||
}
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2],
|
||||
msgCtx->unk120C4 + (msgCtx->unk120C2 << 7));
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2],
|
||||
MSGCTX_UNK120C4 + (MSGCTX_UNK120C2 << 7));
|
||||
Audio_PlaySfx(NA_SE_SY_RUPY_COUNT);
|
||||
} else if (msgCtx->stickAdjY >= 30) {
|
||||
msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2]++;
|
||||
if (msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2] > '9') {
|
||||
msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2] = '0';
|
||||
msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2]++;
|
||||
if (msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2] > '9') {
|
||||
msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2] = '0';
|
||||
}
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2],
|
||||
msgCtx->unk120C4 + (msgCtx->unk120C2 << 7));
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2],
|
||||
MSGCTX_UNK120C4 + (MSGCTX_UNK120C2 << 7));
|
||||
Audio_PlaySfx(NA_SE_SY_RUPY_COUNT);
|
||||
} else if ((msgCtx->stickAdjX >= 30) && !sAnalogStickHeld) {
|
||||
sAnalogStickHeld = true;
|
||||
msgCtx->unk120C2++;
|
||||
if (msgCtx->unk120C2 > 2) {
|
||||
msgCtx->unk120C2 = 2;
|
||||
MSGCTX_UNK120C2++;
|
||||
if (MSGCTX_UNK120C2 > 2) {
|
||||
MSGCTX_UNK120C2 = 2;
|
||||
} else {
|
||||
Audio_PlaySfx(NA_SE_SY_CURSOR);
|
||||
}
|
||||
} else if ((msgCtx->stickAdjX <= -30) && !sAnalogStickHeld) {
|
||||
sAnalogStickHeld = true;
|
||||
msgCtx->unk120C2--;
|
||||
if (msgCtx->unk120C2 < 0) {
|
||||
msgCtx->unk120C2 = 0;
|
||||
MSGCTX_UNK120C2--;
|
||||
if (MSGCTX_UNK120C2 < 0) {
|
||||
MSGCTX_UNK120C2 = 0;
|
||||
} else {
|
||||
Audio_PlaySfx(NA_SE_SY_CURSOR);
|
||||
}
|
||||
|
|
@ -579,33 +637,33 @@ void func_80148D64(PlayState* play) {
|
|||
sAnalogStickHeld = false;
|
||||
}
|
||||
|
||||
msgCtx->rupeesSelected = (msgCtx->decodedBuffer.schar[msgCtx->unk120C0] - '0') * 100;
|
||||
msgCtx->rupeesSelected += (msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + 1] - '0') * 10;
|
||||
msgCtx->rupeesSelected += msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + 2] - '0';
|
||||
msgCtx->rupeesSelected = (msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0] - '0') * 100;
|
||||
msgCtx->rupeesSelected += (msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + 1] - '0') * 10;
|
||||
msgCtx->rupeesSelected += msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + 2] - '0';
|
||||
}
|
||||
|
||||
void func_80149048(PlayState* play) {
|
||||
MessageContext* msgCtx = &play->msgCtx;
|
||||
|
||||
if (msgCtx->stickAdjY <= -30) {
|
||||
msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2]--;
|
||||
if (msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2] < '0') {
|
||||
msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2] = '9';
|
||||
msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2]--;
|
||||
if (msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2] < '0') {
|
||||
msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2] = '9';
|
||||
}
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2],
|
||||
msgCtx->unk120C4 + (msgCtx->unk120C2 << 7));
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2],
|
||||
MSGCTX_UNK120C4 + (MSGCTX_UNK120C2 << 7));
|
||||
Audio_PlaySfx(NA_SE_SY_RUPY_COUNT);
|
||||
} else if (msgCtx->stickAdjY >= 30) {
|
||||
msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2]++;
|
||||
if (msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2] > '9') {
|
||||
msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2] = '0';
|
||||
msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2]++;
|
||||
if (msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2] > '9') {
|
||||
msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2] = '0';
|
||||
}
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2],
|
||||
msgCtx->unk120C4 + (msgCtx->unk120C2 << 7));
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2],
|
||||
MSGCTX_UNK120C4 + (MSGCTX_UNK120C2 << 7));
|
||||
Audio_PlaySfx(NA_SE_SY_RUPY_COUNT);
|
||||
}
|
||||
|
||||
msgCtx->rupeesSelected = (msgCtx->decodedBuffer.schar[msgCtx->unk120C0] - '0') * 10;
|
||||
msgCtx->rupeesSelected = (msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0] - '0') * 10;
|
||||
}
|
||||
|
||||
void func_801491DC(PlayState* play) {
|
||||
|
|
@ -613,36 +671,36 @@ void func_801491DC(PlayState* play) {
|
|||
MessageContext* msgCtx = &play->msgCtx;
|
||||
|
||||
if (msgCtx->stickAdjY <= -30) {
|
||||
msgCtx->unk12054[msgCtx->unk120C2]--;
|
||||
if (msgCtx->unk12054[msgCtx->unk120C2] <= 0) {
|
||||
msgCtx->unk12054[msgCtx->unk120C2] = 5;
|
||||
msgCtx->unk12054[MSGCTX_UNK120C2]--;
|
||||
if (msgCtx->unk12054[MSGCTX_UNK120C2] <= 0) {
|
||||
msgCtx->unk12054[MSGCTX_UNK120C2] = 5;
|
||||
}
|
||||
msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2] = msgCtx->unk12054[msgCtx->unk120C2] + '0';
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2],
|
||||
msgCtx->unk120C4 + (msgCtx->unk120C2 << 7));
|
||||
msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2] = msgCtx->unk12054[MSGCTX_UNK120C2] + '0';
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2],
|
||||
MSGCTX_UNK120C4 + (MSGCTX_UNK120C2 << 7));
|
||||
Audio_PlaySfx(NA_SE_SY_RUPY_COUNT);
|
||||
} else if (msgCtx->stickAdjY >= 30) {
|
||||
msgCtx->unk12054[msgCtx->unk120C2]++;
|
||||
if (msgCtx->unk12054[msgCtx->unk120C2] > 5) {
|
||||
msgCtx->unk12054[msgCtx->unk120C2] = 1;
|
||||
msgCtx->unk12054[MSGCTX_UNK120C2]++;
|
||||
if (msgCtx->unk12054[MSGCTX_UNK120C2] > 5) {
|
||||
msgCtx->unk12054[MSGCTX_UNK120C2] = 1;
|
||||
}
|
||||
msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2] = msgCtx->unk12054[msgCtx->unk120C2] + '0';
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2],
|
||||
msgCtx->unk120C4 + (msgCtx->unk120C2 << 7));
|
||||
msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2] = msgCtx->unk12054[MSGCTX_UNK120C2] + '0';
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2],
|
||||
MSGCTX_UNK120C4 + (MSGCTX_UNK120C2 << 7));
|
||||
Audio_PlaySfx(NA_SE_SY_RUPY_COUNT);
|
||||
} else if ((msgCtx->stickAdjX >= 30) && !sAnalogStickHeld) {
|
||||
sAnalogStickHeld = true;
|
||||
msgCtx->unk120C2++;
|
||||
if (msgCtx->unk120C2 > 4) {
|
||||
msgCtx->unk120C2 = 4;
|
||||
MSGCTX_UNK120C2++;
|
||||
if (MSGCTX_UNK120C2 > 4) {
|
||||
MSGCTX_UNK120C2 = 4;
|
||||
} else {
|
||||
Audio_PlaySfx(NA_SE_SY_CURSOR);
|
||||
}
|
||||
} else if ((msgCtx->stickAdjX <= -30) && !sAnalogStickHeld) {
|
||||
sAnalogStickHeld = true;
|
||||
msgCtx->unk120C2--;
|
||||
if (msgCtx->unk120C2 < 0) {
|
||||
msgCtx->unk120C2 = 0;
|
||||
MSGCTX_UNK120C2--;
|
||||
if (MSGCTX_UNK120C2 < 0) {
|
||||
MSGCTX_UNK120C2 = 0;
|
||||
} else {
|
||||
Audio_PlaySfx(NA_SE_SY_CURSOR);
|
||||
}
|
||||
|
|
@ -656,36 +714,36 @@ void func_80149454(PlayState* play) {
|
|||
MessageContext* msgCtx = &play->msgCtx;
|
||||
|
||||
if (msgCtx->stickAdjY <= -30) {
|
||||
msgCtx->unk12054[msgCtx->unk120C2]--;
|
||||
if (msgCtx->unk12054[msgCtx->unk120C2] < 0) {
|
||||
msgCtx->unk12054[msgCtx->unk120C2] = 9;
|
||||
msgCtx->unk12054[MSGCTX_UNK120C2]--;
|
||||
if (msgCtx->unk12054[MSGCTX_UNK120C2] < 0) {
|
||||
msgCtx->unk12054[MSGCTX_UNK120C2] = 9;
|
||||
}
|
||||
msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2] = msgCtx->unk12054[msgCtx->unk120C2] + '0';
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2],
|
||||
msgCtx->unk120C4 + (msgCtx->unk120C2 << 7));
|
||||
msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2] = msgCtx->unk12054[MSGCTX_UNK120C2] + '0';
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2],
|
||||
MSGCTX_UNK120C4 + (MSGCTX_UNK120C2 << 7));
|
||||
Audio_PlaySfx(NA_SE_SY_RUPY_COUNT);
|
||||
} else if (msgCtx->stickAdjY >= 30) {
|
||||
msgCtx->unk12054[msgCtx->unk120C2]++;
|
||||
if (msgCtx->unk12054[msgCtx->unk120C2] > 9) {
|
||||
msgCtx->unk12054[msgCtx->unk120C2] = 0;
|
||||
msgCtx->unk12054[MSGCTX_UNK120C2]++;
|
||||
if (msgCtx->unk12054[MSGCTX_UNK120C2] > 9) {
|
||||
msgCtx->unk12054[MSGCTX_UNK120C2] = 0;
|
||||
}
|
||||
msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2] = msgCtx->unk12054[msgCtx->unk120C2] + '0';
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[msgCtx->unk120C0 + msgCtx->unk120C2],
|
||||
msgCtx->unk120C4 + (msgCtx->unk120C2 << 7));
|
||||
msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2] = msgCtx->unk12054[MSGCTX_UNK120C2] + '0';
|
||||
Font_LoadCharNES(play, msgCtx->decodedBuffer.schar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2],
|
||||
MSGCTX_UNK120C4 + (MSGCTX_UNK120C2 << 7));
|
||||
Audio_PlaySfx(NA_SE_SY_RUPY_COUNT);
|
||||
} else if ((msgCtx->stickAdjX >= 30) && !sAnalogStickHeld) {
|
||||
sAnalogStickHeld = true;
|
||||
msgCtx->unk120C2++;
|
||||
if (msgCtx->unk120C2 > 2) {
|
||||
msgCtx->unk120C2 = 2;
|
||||
MSGCTX_UNK120C2++;
|
||||
if (MSGCTX_UNK120C2 > 2) {
|
||||
MSGCTX_UNK120C2 = 2;
|
||||
} else {
|
||||
Audio_PlaySfx(NA_SE_SY_CURSOR);
|
||||
}
|
||||
} else if ((msgCtx->stickAdjX <= -30) && !sAnalogStickHeld) {
|
||||
sAnalogStickHeld = true;
|
||||
msgCtx->unk120C2--;
|
||||
if (msgCtx->unk120C2 < 0) {
|
||||
msgCtx->unk120C2 = 0;
|
||||
MSGCTX_UNK120C2--;
|
||||
if (MSGCTX_UNK120C2 < 0) {
|
||||
MSGCTX_UNK120C2 = 0;
|
||||
} else {
|
||||
Audio_PlaySfx(NA_SE_SY_CURSOR);
|
||||
}
|
||||
|
|
@ -699,36 +757,36 @@ void func_801496C8(PlayState* play) {
|
|||
MessageContext* msgCtx = &play->msgCtx;
|
||||
|
||||
if (play->msgCtx.stickAdjY <= -30) {
|
||||
msgCtx->unk12054[msgCtx->unk120C2]--;
|
||||
if (msgCtx->unk12054[msgCtx->unk120C2] < 0) {
|
||||
msgCtx->unk12054[msgCtx->unk120C2] = 3;
|
||||
msgCtx->unk12054[MSGCTX_UNK120C2]--;
|
||||
if (msgCtx->unk12054[MSGCTX_UNK120C2] < 0) {
|
||||
msgCtx->unk12054[MSGCTX_UNK120C2] = 3;
|
||||
}
|
||||
msgCtx->decodedBuffer.wchar[msgCtx->unk120C0 + msgCtx->unk120C2] = msgCtx->unk12054[msgCtx->unk120C2] + '0';
|
||||
Font_LoadChar(play, msgCtx->decodedBuffer.wchar[msgCtx->unk120C0 + msgCtx->unk120C2],
|
||||
msgCtx->unk120C4 + (msgCtx->unk120C2 << 7));
|
||||
msgCtx->decodedBuffer.wchar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2] = msgCtx->unk12054[MSGCTX_UNK120C2] + '0';
|
||||
Font_LoadChar(play, msgCtx->decodedBuffer.wchar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2],
|
||||
MSGCTX_UNK120C4 + (MSGCTX_UNK120C2 << 7));
|
||||
Audio_PlaySfx(NA_SE_SY_RUPY_COUNT);
|
||||
} else if (msgCtx->stickAdjY >= 30) {
|
||||
msgCtx->unk12054[msgCtx->unk120C2]++;
|
||||
if (msgCtx->unk12054[msgCtx->unk120C2] >= 4) {
|
||||
msgCtx->unk12054[msgCtx->unk120C2] = 0;
|
||||
msgCtx->unk12054[MSGCTX_UNK120C2]++;
|
||||
if (msgCtx->unk12054[MSGCTX_UNK120C2] >= 4) {
|
||||
msgCtx->unk12054[MSGCTX_UNK120C2] = 0;
|
||||
}
|
||||
msgCtx->decodedBuffer.wchar[msgCtx->unk120C0 + msgCtx->unk120C2] = msgCtx->unk12054[msgCtx->unk120C2] + '0';
|
||||
Font_LoadChar(play, msgCtx->decodedBuffer.wchar[msgCtx->unk120C0 + msgCtx->unk120C2],
|
||||
msgCtx->unk120C4 + (msgCtx->unk120C2 << 7));
|
||||
msgCtx->decodedBuffer.wchar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2] = msgCtx->unk12054[MSGCTX_UNK120C2] + '0';
|
||||
Font_LoadChar(play, msgCtx->decodedBuffer.wchar[MSGCTX_UNK120C0 + MSGCTX_UNK120C2],
|
||||
MSGCTX_UNK120C4 + (MSGCTX_UNK120C2 << 7));
|
||||
Audio_PlaySfx(NA_SE_SY_RUPY_COUNT);
|
||||
} else if ((msgCtx->stickAdjX >= 30) && !sAnalogStickHeld) {
|
||||
sAnalogStickHeld = true;
|
||||
msgCtx->unk120C2++;
|
||||
if (msgCtx->unk120C2 > 5) {
|
||||
msgCtx->unk120C2 = 5;
|
||||
MSGCTX_UNK120C2++;
|
||||
if (MSGCTX_UNK120C2 > 5) {
|
||||
MSGCTX_UNK120C2 = 5;
|
||||
} else {
|
||||
Audio_PlaySfx(NA_SE_SY_CURSOR);
|
||||
}
|
||||
} else if ((msgCtx->stickAdjX <= -30) && !sAnalogStickHeld) {
|
||||
sAnalogStickHeld = true;
|
||||
msgCtx->unk120C2--;
|
||||
if (msgCtx->unk120C2 < 0) {
|
||||
msgCtx->unk120C2 = 0;
|
||||
MSGCTX_UNK120C2--;
|
||||
if (MSGCTX_UNK120C2 < 0) {
|
||||
MSGCTX_UNK120C2 = 0;
|
||||
} else {
|
||||
Audio_PlaySfx(NA_SE_SY_CURSOR);
|
||||
}
|
||||
|
|
@ -1101,9 +1159,9 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
|
|||
if (play->msgCtx.itemId != MESSAGE_ITEM_NONE) {
|
||||
Message_DrawItemIcon(play, &gfx);
|
||||
}
|
||||
msgCtx->textColorR = msgCtx->unk120C8;
|
||||
msgCtx->textColorG = msgCtx->unk120CA;
|
||||
msgCtx->textColorB = msgCtx->unk120CC;
|
||||
msgCtx->textColorR = MSGCTX_UNK120C8;
|
||||
msgCtx->textColorG = MSGCTX_UNK120CA;
|
||||
msgCtx->textColorB = MSGCTX_UNK120CC;
|
||||
|
||||
charTexIndex = 0;
|
||||
|
||||
|
|
@ -1135,32 +1193,32 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
|
|||
if ((msgCtx->msgMode >= MSGMODE_NEW_CYCLE_0) && (msgCtx->msgMode <= MSGMODE_NEW_CYCLE_2) &&
|
||||
(character == 0x2002)) {
|
||||
msgCtx->textDrawPos = msgCtx->decodedTextLen;
|
||||
if (msgCtx->unk120D6) {
|
||||
msgCtx->unk120D4 += 25;
|
||||
if (msgCtx->unk120D4 >= 100) {
|
||||
msgCtx->unk120D6 = false;
|
||||
if (MSGCTX_UNK120D6) {
|
||||
MSGCTX_UNK120D4 += 25;
|
||||
if (MSGCTX_UNK120D4 >= 100) {
|
||||
MSGCTX_UNK120D6 = false;
|
||||
}
|
||||
} else {
|
||||
msgCtx->unk120D4 -= 25;
|
||||
if (msgCtx->unk120D4 <= -100) {
|
||||
msgCtx->unk120D6 = true;
|
||||
MSGCTX_UNK120D4 -= 25;
|
||||
if (MSGCTX_UNK120D4 <= -100) {
|
||||
MSGCTX_UNK120D6 = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (D_801CFE74[(s16)(character - 0x2001)].r + msgCtx->unk120D4 < 0) {
|
||||
if (D_801CFE74[(s16)(character - 0x2001)].r + MSGCTX_UNK120D4 < 0) {
|
||||
msgCtx->textColorR = 0;
|
||||
} else {
|
||||
msgCtx->textColorR = D_801CFE74[(s16)(character - 0x2001)].r + msgCtx->unk120D4;
|
||||
msgCtx->textColorR = D_801CFE74[(s16)(character - 0x2001)].r + MSGCTX_UNK120D4;
|
||||
}
|
||||
if (D_801CFE74[(s16)(character - 0x2001)].g + msgCtx->unk120D4 >= 255) {
|
||||
if (D_801CFE74[(s16)(character - 0x2001)].g + MSGCTX_UNK120D4 >= 255) {
|
||||
msgCtx->textColorG = D_801CFE74[(s16)(character - 0x2001)].g;
|
||||
} else {
|
||||
msgCtx->textColorG = D_801CFE74[(s16)(character - 0x2001)].g + msgCtx->unk120D4;
|
||||
msgCtx->textColorG = D_801CFE74[(s16)(character - 0x2001)].g + MSGCTX_UNK120D4;
|
||||
}
|
||||
if (D_801CFE74[(s16)(character - 0x2001)].b + msgCtx->unk120D4 < 0) {
|
||||
if (D_801CFE74[(s16)(character - 0x2001)].b + MSGCTX_UNK120D4 < 0) {
|
||||
msgCtx->textColorB = 0;
|
||||
} else {
|
||||
msgCtx->textColorB = D_801CFE74[(s16)(character - 0x2001)].b + msgCtx->unk120D4;
|
||||
msgCtx->textColorB = D_801CFE74[(s16)(character - 0x2001)].b + MSGCTX_UNK120D4;
|
||||
}
|
||||
} else if (play->pauseCtx.bombersNotebookOpen) {
|
||||
msgCtx->textColorR = sColorsBombersNotebookJPN[(s16)(character - 0x2001)].r;
|
||||
|
|
@ -1222,9 +1280,9 @@ void Message_DrawTextDefault(PlayState* play, Gfx** gfxP) {
|
|||
msgCtx->textUnskippable = false;
|
||||
msgCtx->msgBufPos++;
|
||||
}
|
||||
msgCtx->unk120CE = msgCtx->textColorR;
|
||||
msgCtx->unk120D0 = msgCtx->textColorG;
|
||||
msgCtx->unk120D2 = msgCtx->textColorB;
|
||||
MSGCTX_UNK120CE = msgCtx->textColorR;
|
||||
MSGCTX_UNK120D0 = msgCtx->textColorG;
|
||||
MSGCTX_UNK120D2 = msgCtx->textColorB;
|
||||
}
|
||||
*gfxP = gfx;
|
||||
return;
|
||||
|
|
@ -2259,9 +2317,9 @@ void Message_Decode(PlayState* play) {
|
|||
msgCtx->textDrawPos = msgCtx->decodedTextLen;
|
||||
}
|
||||
|
||||
msgCtx->unk120C8 = msgCtx->unk120CE;
|
||||
msgCtx->unk120CA = msgCtx->unk120D0;
|
||||
msgCtx->unk120CC = msgCtx->unk120D2;
|
||||
MSGCTX_UNK120C8 = MSGCTX_UNK120CE;
|
||||
MSGCTX_UNK120CA = MSGCTX_UNK120D0;
|
||||
MSGCTX_UNK120CC = MSGCTX_UNK120D2;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -2403,11 +2461,11 @@ void Message_Decode(PlayState* play) {
|
|||
Message_LoadChar(play, 0x9543, &charTexIndex, &spC0, decodedBufPos);
|
||||
} else if (curChar == 0x20C) {
|
||||
decodedBufPos++;
|
||||
msgCtx->unk120BE = spD2;
|
||||
msgCtx->unk120C0 = decodedBufPos;
|
||||
msgCtx->unk120C2 = 2;
|
||||
MSGCTX_UNK120BE = spD2;
|
||||
MSGCTX_UNK120C0 = decodedBufPos;
|
||||
MSGCTX_UNK120C2 = 2;
|
||||
msgCtx->rupeesSelected = 0;
|
||||
msgCtx->unk120C4 = charTexIndex;
|
||||
MSGCTX_UNK120C4 = charTexIndex;
|
||||
digits[0] = digits[1] = digits[2] = 0;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
|
|
@ -2567,11 +2625,11 @@ void Message_Decode(PlayState* play) {
|
|||
decodedBufPos--;
|
||||
} else if (curChar == 0x220) {
|
||||
decodedBufPos++;
|
||||
msgCtx->unk120BE = spD2;
|
||||
msgCtx->unk120C0 = decodedBufPos;
|
||||
msgCtx->unk120C2 = 0;
|
||||
MSGCTX_UNK120BE = spD2;
|
||||
MSGCTX_UNK120C0 = decodedBufPos;
|
||||
MSGCTX_UNK120C2 = 0;
|
||||
msgCtx->rupeesSelected = 0;
|
||||
msgCtx->unk120C4 = charTexIndex;
|
||||
MSGCTX_UNK120C4 = charTexIndex;
|
||||
digits[0] = digits[1] = digits[2] = 0;
|
||||
for (i = 0; i < 2; i++) {
|
||||
Message_LoadChar(play, digits[i] + '0', &charTexIndex, &spC0, decodedBufPos);
|
||||
|
|
@ -2580,11 +2638,11 @@ void Message_Decode(PlayState* play) {
|
|||
Message_LoadRupeesJPN(play, &decodedBufPos, &charTexIndex, &spC0);
|
||||
} else if (curChar == 0x221) {
|
||||
decodedBufPos++;
|
||||
msgCtx->unk120BE = spD2;
|
||||
msgCtx->unk120C0 = decodedBufPos;
|
||||
msgCtx->unk120C2 = 0;
|
||||
MSGCTX_UNK120BE = spD2;
|
||||
MSGCTX_UNK120C0 = decodedBufPos;
|
||||
MSGCTX_UNK120C2 = 0;
|
||||
msgCtx->rupeesSelected = 0;
|
||||
msgCtx->unk120C4 = charTexIndex;
|
||||
MSGCTX_UNK120C4 = charTexIndex;
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
msgCtx->unk12054[i] = 1;
|
||||
|
|
@ -2613,11 +2671,11 @@ void Message_Decode(PlayState* play) {
|
|||
Message_LoadOwlWarpText(play, &charTexIndex, &spC0, &decodedBufPos);
|
||||
} else if (curChar == 0x225) {
|
||||
decodedBufPos++;
|
||||
msgCtx->unk120BE = spD2;
|
||||
msgCtx->unk120C0 = decodedBufPos;
|
||||
msgCtx->unk120C2 = 0;
|
||||
MSGCTX_UNK120BE = spD2;
|
||||
MSGCTX_UNK120C0 = decodedBufPos;
|
||||
MSGCTX_UNK120C2 = 0;
|
||||
msgCtx->rupeesSelected = 0;
|
||||
msgCtx->unk120C4 = charTexIndex;
|
||||
MSGCTX_UNK120C4 = charTexIndex;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
msgCtx->unk12054[i] = 1;
|
||||
|
|
@ -3054,7 +3112,9 @@ void Message_Decode(PlayState* play) {
|
|||
} else if (msgCtx->textIsCredits) {
|
||||
Message_DecodeCredits(play);
|
||||
} else {
|
||||
#if MM_VERSION >= N64_US
|
||||
Message_DecodeNES(play);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3199,10 +3259,12 @@ void Message_OpenText(PlayState* play, u16 textId) {
|
|||
DmaMgr_RequestSync(&font->msgBuf, SEGMENT_ROM_START(message_data_static) + font->messageStart,
|
||||
font->messageEnd);
|
||||
} else {
|
||||
#if MM_VERSION >= N64_US
|
||||
Message_FindMessageNES(play, textId);
|
||||
msgCtx->msgLength = font->messageEnd;
|
||||
DmaMgr_RequestSync(&font->msgBuf, SEGMENT_ROM_START(message_data_static) + font->messageStart,
|
||||
font->messageEnd);
|
||||
#endif
|
||||
}
|
||||
|
||||
msgCtx->choiceNum = 0;
|
||||
|
|
@ -3227,9 +3289,9 @@ void Message_OpenText(PlayState* play, u16 textId) {
|
|||
|
||||
if ((msgCtx->textBoxType == TEXTBOX_TYPE_CLEAR) || (msgCtx->textBoxType == TEXTBOX_TYPE_NOTEBOOK_NOTIFICATION) ||
|
||||
(play->pauseCtx.bombersNotebookOpen)) {
|
||||
msgCtx->unk120CE = msgCtx->unk120D0 = msgCtx->unk120D2 = 0;
|
||||
MSGCTX_UNK120CE = MSGCTX_UNK120D0 = MSGCTX_UNK120D2 = 0;
|
||||
} else {
|
||||
msgCtx->unk120CE = msgCtx->unk120D0 = msgCtx->unk120D2 = 0xFF;
|
||||
MSGCTX_UNK120CE = MSGCTX_UNK120D0 = MSGCTX_UNK120D2 = 0xFF;
|
||||
}
|
||||
|
||||
msgCtx->choiceIndex = 0;
|
||||
|
|
@ -3293,10 +3355,12 @@ void Message_PauseMenu_ShowDescription(PlayState* play, u16 textId, u8 textBoxPo
|
|||
DmaMgr_RequestSync(&font->msgBuf, SEGMENT_ROM_START(message_data_static) + font->messageStart,
|
||||
font->messageEnd);
|
||||
} else {
|
||||
#if MM_VERSION >= N64_US
|
||||
Message_FindMessageNES(play, textId);
|
||||
msgCtx->msgLength = font->messageEnd;
|
||||
DmaMgr_RequestSync(&font->msgBuf, SEGMENT_ROM_START(message_data_static) + font->messageStart,
|
||||
font->messageEnd);
|
||||
#endif
|
||||
}
|
||||
msgCtx->choiceNum = 0;
|
||||
msgCtx->textUnskippable = false;
|
||||
|
|
@ -3323,8 +3387,8 @@ void Message_PauseMenu_ShowDescription(PlayState* play, u16 textId, u8 textBoxPo
|
|||
msgCtx->stateTimer = 0;
|
||||
msgCtx->textDelayTimer = 0;
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_NONE;
|
||||
msgCtx->unk120D2 = 0xFF;
|
||||
msgCtx->unk120CE = msgCtx->unk120D0 = msgCtx->unk120D2;
|
||||
MSGCTX_UNK120D2 = 0xFF;
|
||||
MSGCTX_UNK120CE = MSGCTX_UNK120D0 = MSGCTX_UNK120D2;
|
||||
}
|
||||
|
||||
void Message_StartTextbox(PlayState* play, u16 textId, Actor* actor) {
|
||||
|
|
@ -3373,7 +3437,7 @@ void Message_DisplaySceneTitleCard(PlayState* play, u16 textId) {
|
|||
msgCtx->msgLength = 0;
|
||||
Message_OpenText(play, textId);
|
||||
Message_SetTextboxColor(play);
|
||||
Message_DecodeNES(play);
|
||||
MESSAGE_DECODE(play);
|
||||
msgCtx->msgMode = MSGMODE_SCENE_TITLE_CARD_FADE_IN_BACKGROUND;
|
||||
msgCtx->textDelayTimer = 0;
|
||||
msgCtx->textboxColorAlphaCurrent = msgCtx->textboxColorAlphaTarget = msgCtx->textColorAlpha = 0;
|
||||
|
|
@ -4086,7 +4150,9 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) {
|
|||
} else if (play->msgCtx.textIsCredits) {
|
||||
Message_DrawTextCredits(play, gfxP);
|
||||
} else {
|
||||
#if MM_VERSION >= N64_US
|
||||
Message_DrawTextNES(play, gfxP, 0);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -4115,7 +4181,7 @@ void Message_DrawSceneTitleCard(PlayState* play, Gfx** gfxP) {
|
|||
msgCtx->unk11FF8 = XREG(75);
|
||||
}
|
||||
msgCtx->unk11FFA = XREG(74);
|
||||
Message_DrawTextNES(play, &gfx, 0);
|
||||
MESSAGE_DRAW_TEXT(play, &gfx, 0);
|
||||
*gfxP = gfx++;
|
||||
}
|
||||
|
||||
|
|
@ -4243,9 +4309,9 @@ void Message_DrawMain(PlayState* play, Gfx** gfxP) {
|
|||
if (msgCtx->textDelay != 0) {
|
||||
msgCtx->textDrawPos += msgCtx->textDelay;
|
||||
}
|
||||
Message_DrawTextNES(play, &gfx, 0);
|
||||
MESSAGE_DRAW_TEXT(play, &gfx, 0);
|
||||
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
|
||||
Message_DrawTextNES(play, &gfx, (s32)msgCtx->textDrawPos);
|
||||
MESSAGE_DRAW_TEXT(play, &gfx, (s32)msgCtx->textDrawPos);
|
||||
}
|
||||
} else if (msgCtx->textIsCredits) {
|
||||
Message_DrawTextCredits(play, &gfx);
|
||||
|
|
@ -4253,9 +4319,9 @@ void Message_DrawMain(PlayState* play, Gfx** gfxP) {
|
|||
if (msgCtx->textDelay != 0) {
|
||||
msgCtx->textDrawPos += msgCtx->textDelay;
|
||||
}
|
||||
Message_DrawTextNES(play, &gfx, 0);
|
||||
MESSAGE_DRAW_TEXT(play, &gfx, 0);
|
||||
if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) {
|
||||
Message_DrawTextNES(play, &gfx, (s32)msgCtx->textDrawPos);
|
||||
MESSAGE_DRAW_TEXT(play, &gfx, (s32)msgCtx->textDrawPos);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -4266,7 +4332,7 @@ void Message_DrawMain(PlayState* play, Gfx** gfxP) {
|
|||
case MSGMODE_OWL_SAVE_0:
|
||||
case MSGMODE_OWL_SAVE_1:
|
||||
case MSGMODE_OWL_SAVE_2:
|
||||
Message_DrawTextNES(play, &gfx, 0);
|
||||
MESSAGE_DRAW_TEXT(play, &gfx, 0);
|
||||
break;
|
||||
|
||||
case MSGMODE_TEXT_AWAIT_INPUT:
|
||||
|
|
@ -4997,17 +5063,17 @@ void Message_DrawMain(PlayState* play, Gfx** gfxP) {
|
|||
case MSGMODE_TEXT_DONE:
|
||||
switch (msgCtx->textboxEndType) {
|
||||
case TEXTBOX_ENDTYPE_INPUT_BANK:
|
||||
temp_v0_33 = msgCtx->unk120BE;
|
||||
temp_v0_33 = MSGCTX_UNK120BE;
|
||||
temp = msgCtx->unk11FFA + (msgCtx->unk11FFC * temp_v0_33);
|
||||
func_80147F18(play, &gfx,
|
||||
msgCtx->unk11F1A[temp_v0_33] +
|
||||
(s32)(16.0f * msgCtx->textCharScale * (msgCtx->unk120C2 + 5)) - 1,
|
||||
(s32)(16.0f * msgCtx->textCharScale * (MSGCTX_UNK120C2 + 5)) - 1,
|
||||
temp);
|
||||
func_80148D64(play);
|
||||
break;
|
||||
|
||||
case TEXTBOX_ENDTYPE_INPUT_DOGGY_RACETRACK_BET:
|
||||
temp_v0_33 = msgCtx->unk120BE;
|
||||
temp_v0_33 = MSGCTX_UNK120BE;
|
||||
temp = msgCtx->unk11FFA + (msgCtx->unk11FFC * temp_v0_33);
|
||||
func_80148558(play, &gfx,
|
||||
msgCtx->unk11F1A[temp_v0_33] + (s32)(16.0f * msgCtx->textCharScale * 5.0f) - 1,
|
||||
|
|
@ -5016,31 +5082,31 @@ void Message_DrawMain(PlayState* play, Gfx** gfxP) {
|
|||
break;
|
||||
|
||||
case TEXTBOX_ENDTYPE_INPUT_BOMBER_CODE:
|
||||
temp_v0_33 = msgCtx->unk120BE;
|
||||
temp_v0_33 = MSGCTX_UNK120BE;
|
||||
temp = msgCtx->unk11FFA + (msgCtx->unk11FFC * temp_v0_33);
|
||||
func_80147F18(play, &gfx,
|
||||
msgCtx->unk11F1A[temp_v0_33] +
|
||||
(s32)(16.0f * msgCtx->textCharScale * (msgCtx->unk120C2 + 5)) - 1,
|
||||
(s32)(16.0f * msgCtx->textCharScale * (MSGCTX_UNK120C2 + 5)) - 1,
|
||||
temp);
|
||||
func_801491DC(play);
|
||||
break;
|
||||
|
||||
case TEXTBOX_ENDTYPE_INPUT_LOTTERY_CODE:
|
||||
temp_v0_33 = msgCtx->unk120BE;
|
||||
temp_v0_33 = MSGCTX_UNK120BE;
|
||||
temp = msgCtx->unk11FFA + (msgCtx->unk11FFC * temp_v0_33);
|
||||
func_80147F18(play, &gfx,
|
||||
msgCtx->unk11F1A[temp_v0_33] +
|
||||
(s32)(16.0f * msgCtx->textCharScale * (msgCtx->unk120C2 + 5)) - 1,
|
||||
(s32)(16.0f * msgCtx->textCharScale * (MSGCTX_UNK120C2 + 5)) - 1,
|
||||
temp);
|
||||
func_80149454(play);
|
||||
break;
|
||||
|
||||
case TEXTBOX_ENDTYPE_64:
|
||||
temp_v0_33 = msgCtx->unk120BE;
|
||||
temp_v0_33 = MSGCTX_UNK120BE;
|
||||
temp = msgCtx->unk11FFA + (msgCtx->unk11FFC * temp_v0_33);
|
||||
func_80147F18(play, &gfx,
|
||||
msgCtx->unk11F1A[temp_v0_33] +
|
||||
(s32)(16.0f * msgCtx->textCharScale * (msgCtx->unk120C2 + 4)) - 6,
|
||||
(s32)(16.0f * msgCtx->textCharScale * (MSGCTX_UNK120C2 + 4)) - 6,
|
||||
temp);
|
||||
func_801496C8(play);
|
||||
break;
|
||||
|
|
@ -5595,8 +5661,8 @@ void Message_Update(PlayState* play) {
|
|||
Audio_PlaySfx_MessageDecide();
|
||||
msgCtx->msgMode = MSGMODE_NEW_CYCLE_0;
|
||||
msgCtx->decodedTextLen -= 3;
|
||||
msgCtx->unk120D6 = 0;
|
||||
msgCtx->unk120D4 = 0;
|
||||
MSGCTX_UNK120D6 = 0;
|
||||
MSGCTX_UNK120D4 = 0;
|
||||
} else {
|
||||
Audio_PlaySfx_MessageCancel();
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_END;
|
||||
|
|
@ -6061,16 +6127,19 @@ void Message_Init(PlayState* play) {
|
|||
msgCtx->textboxX = 52;
|
||||
msgCtx->textboxY = 36;
|
||||
msgCtx->ocarinaSongEffectActive = false;
|
||||
msgCtx->unk120BE = 0;
|
||||
msgCtx->unk120C0 = 0;
|
||||
msgCtx->unk120C2 = 0;
|
||||
msgCtx->unk120C4 = 0;
|
||||
msgCtx->unk120C8 = 0;
|
||||
msgCtx->unk120CA = 0;
|
||||
msgCtx->unk120CC = 0;
|
||||
msgCtx->unk120CE = 0;
|
||||
msgCtx->unk120D0 = 0;
|
||||
msgCtx->unk120D2 = 0;
|
||||
msgCtx->unk120D4 = 0;
|
||||
msgCtx->unk120D6 = 0;
|
||||
|
||||
#if MM_VERSION >= N64_US
|
||||
MSGCTX_UNK120BE = 0;
|
||||
MSGCTX_UNK120C0 = 0;
|
||||
MSGCTX_UNK120C2 = 0;
|
||||
MSGCTX_UNK120C4 = 0;
|
||||
MSGCTX_UNK120C8 = 0;
|
||||
MSGCTX_UNK120CA = 0;
|
||||
MSGCTX_UNK120CC = 0;
|
||||
MSGCTX_UNK120CE = 0;
|
||||
MSGCTX_UNK120D0 = 0;
|
||||
MSGCTX_UNK120D2 = 0;
|
||||
MSGCTX_UNK120D4 = 0;
|
||||
MSGCTX_UNK120D6 = 0;
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* File: z_bg_heavy_block.c
|
||||
* Overlay: ovl_Bg_Heavy_Block
|
||||
* Description: Large block that can only be lifted with Golden Gauntlets (JP only)
|
||||
*/
|
||||
|
||||
#include "z_bg_heavy_block.h"
|
||||
|
||||
#include "versions.h"
|
||||
|
||||
#define FLAGS 0
|
||||
|
||||
void BgHeavyBlock_Init(Actor* thisx, PlayState* play);
|
||||
void BgHeavyBlock_Destroy(Actor* thisx, PlayState* play);
|
||||
void BgHeavyBlock_Update(Actor* thisx, PlayState* play);
|
||||
void BgHeavyBlock_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
ActorProfile Bg_Heavy_Block_Profile = {
|
||||
/**/ ACTOR_BG_HEAVY_BLOCK,
|
||||
/**/ ACTORCAT_BG,
|
||||
/**/ FLAGS,
|
||||
/**/ OBJECT_HEAVY_OBJECT,
|
||||
/**/ sizeof(BgHeavyBlock),
|
||||
/**/ BgHeavyBlock_Init,
|
||||
/**/ BgHeavyBlock_Destroy,
|
||||
/**/ BgHeavyBlock_Update,
|
||||
/**/ BgHeavyBlock_Draw,
|
||||
};
|
||||
|
||||
void BgHeavyBlock_Init(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
void BgHeavyBlock_Destroy(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
void BgHeavyBlock_Update(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
void BgHeavyBlock_Draw(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef Z_BG_HEAVY_BLOCK_H
|
||||
#define Z_BG_HEAVY_BLOCK_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
struct BgHeavyBlock;
|
||||
|
||||
typedef void (*BgHeavyBlockActionFunc)(struct BgHeavyBlock*, PlayState*);
|
||||
|
||||
typedef struct BgHeavyBlock {
|
||||
/* 0x000 */ DynaPolyActor dyna;
|
||||
/* 0x15C */ char unk_15C[0x16C - 0x15C];
|
||||
/* 0x16C */ BgHeavyBlockActionFunc actionFunc;
|
||||
} BgHeavyBlock; // size = 0x170
|
||||
|
||||
#endif // Z_BG_HEAVY_BLOCK_H
|
||||
|
|
@ -136,7 +136,9 @@ void ObjWarpstone_Update(Actor* thisx, PlayState* play) {
|
|||
if (this->isTalking) {
|
||||
if (Actor_TextboxIsClosing(&this->dyna.actor, play)) {
|
||||
this->isTalking = false;
|
||||
} else if ((Message_GetState(&play->msgCtx) == TEXT_STATE_CHOICE) && Message_ShouldAdvance(play)) {
|
||||
} else {
|
||||
#if MM_VERSION >= N64_US
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_CHOICE) && Message_ShouldAdvance(play)) {
|
||||
if (play->msgCtx.choiceIndex != 0) {
|
||||
Audio_PlaySfx_MessageDecide();
|
||||
play->msgCtx.msgMode = MSGMODE_OWL_SAVE_0;
|
||||
|
|
@ -147,6 +149,8 @@ void ObjWarpstone_Update(Actor* thisx, PlayState* play) {
|
|||
Message_CloseTextbox(play);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
} else if (Actor_TalkOfferAccepted(&this->dyna.actor, &play->state)) {
|
||||
this->isTalking = true;
|
||||
} else if (!this->actionFunc(this, play)) {
|
||||
|
|
|
|||
|
|
@ -12225,7 +12225,9 @@ s8 sPlayerCueToCsActionMap[PLAYER_CUEID_MAX] = {
|
|||
PLAYER_CSACTION_120, // PLAYER_CUEID_88
|
||||
PLAYER_CSACTION_114, // PLAYER_CUEID_89
|
||||
PLAYER_CSACTION_111, // PLAYER_CUEID_90
|
||||
#if MM_VERSION >= N64_US
|
||||
PLAYER_CSACTION_122, // PLAYER_CUEID_91
|
||||
#endif
|
||||
};
|
||||
|
||||
f32 D_8085D3E0[PLAYER_FORM_MAX] = {
|
||||
|
|
@ -20204,7 +20206,9 @@ PlayerCsActionEntry sPlayerCsActionInitFuncs[PLAYER_CSACTION_MAX] = {
|
|||
/* PLAYER_CSACTION_119 */ { PLAYER_CSTYPE_ANIM_7, { &gPlayerAnim_demo_suwari2 } },
|
||||
/* PLAYER_CSACTION_120 */ { PLAYER_CSTYPE_ANIM_7, { &gPlayerAnim_demo_suwari3 } },
|
||||
/* PLAYER_CSACTION_121 */ { PLAYER_CSTYPE_ACTION, { Player_CsAction_7 } },
|
||||
#if MM_VERSION >= N64_US
|
||||
/* PLAYER_CSACTION_122 */ { PLAYER_CSTYPE_NONE, { NULL } },
|
||||
#endif
|
||||
/* PLAYER_CSACTION_123 */ { PLAYER_CSTYPE_ACTION, { Player_CsAction_9 } },
|
||||
/* PLAYER_CSACTION_124 */ { PLAYER_CSTYPE_ANIM_7, { &gPlayerAnim_clink_demo_get1 } },
|
||||
/* PLAYER_CSACTION_125 */ { PLAYER_CSTYPE_ANIM_5, { &gPlayerAnim_clink_demo_get2 } },
|
||||
|
|
@ -20347,7 +20351,9 @@ PlayerCsActionEntry sPlayerCsActionUpdateFuncs[PLAYER_CSACTION_MAX] = {
|
|||
/* PLAYER_CSACTION_119 */ { PLAYER_CSTYPE_ANIM_11, { NULL } },
|
||||
/* PLAYER_CSACTION_120 */ { PLAYER_CSTYPE_ANIM_11, { NULL } },
|
||||
/* PLAYER_CSACTION_121 */ { PLAYER_CSTYPE_ACTION, { Player_CsAction_8 } },
|
||||
#if MM_VERSION >= N64_US
|
||||
/* PLAYER_CSACTION_122 */ { PLAYER_CSTYPE_ACTION, { Player_CsAction_12 } },
|
||||
#endif
|
||||
/* PLAYER_CSACTION_123 */ { PLAYER_CSTYPE_ACTION, { Player_CsAction_10 } },
|
||||
/* PLAYER_CSACTION_125 */ { PLAYER_CSTYPE_ANIM_11, { NULL } },
|
||||
/* PLAYER_CSACTION_124 */ { PLAYER_CSTYPE_ANIM_11, { NULL } },
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -6,6 +6,7 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import colorama
|
||||
from pathlib import Path
|
||||
from typing import BinaryIO
|
||||
|
||||
|
|
@ -13,7 +14,6 @@ import spimdisasm
|
|||
|
||||
from file_addresses import DmaFile, parse_file_addresses, get_z_name_for_overlay
|
||||
|
||||
|
||||
def load_file_splits(
|
||||
context: spimdisasm.common.Context,
|
||||
config_dir: Path,
|
||||
|
|
@ -113,15 +113,11 @@ def main():
|
|||
file_splits = load_file_splits(context, args.config_dir, dma_file, f)
|
||||
all_file_splits.append(file_splits)
|
||||
|
||||
progress_str = ""
|
||||
|
||||
print("Analyzing...")
|
||||
for i, file_splits in enumerate(all_file_splits):
|
||||
f = i / len(all_file_splits)
|
||||
|
||||
spimdisasm.common.Utils.printQuietless(f'{len(progress_str) * " "}\r', end="")
|
||||
progress_str = f'{f*100:3.0f}% Analyzing {file_splits.name}\r'
|
||||
spimdisasm.common.Utils.printQuietless(progress_str, end="", flush=True)
|
||||
spimdisasm.common.Utils.printQuietless(f'{colorama.ansi.clear_line()}{f*100:3.0f}% Analyzing {file_splits.name}\r', end="", flush=True)
|
||||
|
||||
file_splits.analyze()
|
||||
print()
|
||||
|
|
@ -136,9 +132,7 @@ def main():
|
|||
for i, file_splits in enumerate(all_file_splits):
|
||||
f = i / len(all_file_splits)
|
||||
|
||||
spimdisasm.common.Utils.printQuietless(f'{len(progress_str) * " "} \r', end="")
|
||||
progress_str = f'{f*100:3.0f}% Writing {file_splits.name}\r'
|
||||
spimdisasm.common.Utils.printQuietless(progress_str, end="", flush=True)
|
||||
spimdisasm.common.Utils.printQuietless(f'{colorama.ansi.clear_line()}{f*100:3.0f}% Writing {file_splits.name}\r', end="", flush=True)
|
||||
|
||||
for sectDict in file_splits.sectionsDict.values():
|
||||
for name, section in sectDict.items():
|
||||
|
|
@ -162,9 +156,7 @@ def main():
|
|||
for i, file_splits in enumerate(all_file_splits):
|
||||
f = i / len(all_file_splits)
|
||||
|
||||
spimdisasm.common.Utils.printQuietless(f'{len(progress_str) * " "} \r', end="")
|
||||
progress_str = f'{f*100:3.0f}% Writing {file_splits.name}\r'
|
||||
spimdisasm.common.Utils.printQuietless(progress_str, end="", flush=True)
|
||||
spimdisasm.common.Utils.printQuietless(f'{colorama.ansi.clear_line()}{f*100:3.0f}% Writing {file_splits.name}\r', end="", flush=True)
|
||||
|
||||
for section_name, text_section in file_splits.sectionsDict[
|
||||
spimdisasm.common.FileSectionType.Text
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/env bash
|
||||
set -eu -o pipefail
|
||||
|
||||
if [ "${VERBOSE-}" ]
|
||||
then
|
||||
echo "$VERSION"
|
||||
echo "$DISASM_DIR"
|
||||
echo "$ASSEMBLE_DIR"
|
||||
echo "$AS_CMD"
|
||||
echo "$LD"
|
||||
set -x
|
||||
fi
|
||||
|
||||
echo Assembling text,data,rodata,bss sections together for each file...
|
||||
for filebase in `find $DISASM_DIR -name '*.s' -printf '%P\n' | sed -E -n 's/\.(text|data|rodata|bss)\.s$//p' | sort | uniq`
|
||||
do
|
||||
printf '\e[2K%s\r' "${filebase}"
|
||||
files=
|
||||
for section in text data rodata bss
|
||||
do
|
||||
file="$DISASM_DIR/$filebase.$section.s"
|
||||
if [ -e $file ]
|
||||
then
|
||||
files="$files $file"
|
||||
fi
|
||||
done
|
||||
mkdir -p $(dirname $ASSEMBLE_DIR/$filebase.o)
|
||||
iconv_cmd="iconv -f UTF-8 -t EUC-JP $files"
|
||||
asfile_cmd="$AS_CMD -o $ASSEMBLE_DIR/$filebase.o --"
|
||||
( $iconv_cmd | $asfile_cmd ) || (
|
||||
echo
|
||||
echo Error on assembling:
|
||||
echo "$filebase"
|
||||
echo Command line:
|
||||
echo "$iconv_cmd | $asfile_cmd"
|
||||
false
|
||||
)
|
||||
done
|
||||
echo
|
||||
echo Assembling done!
|
||||
|
|
@ -0,0 +1,621 @@
|
|||
name,vrom_start,vrom_end,rom_start,rom_end,vram_start,overlay_dir
|
||||
boot,1060,1C050,1060,0,80080060,
|
||||
code,B5F000,C9BA60,AC5240,B82260,800A75E0,
|
||||
ovl_title,C9BA60,C9C530,B82260,B82A00,80800000,gamestates
|
||||
ovl_select,C9C530,C9FA40,B82A00,B84980,80800AD0,gamestates
|
||||
ovl_opening,C9FA40,C9FD30,B84980,B84BB0,80803FE0,gamestates
|
||||
ovl_file_choose,C9FD30,CB0630,B84BB0,B8E330,808042D0,gamestates
|
||||
ovl_daytelop,CB0630,CB1820,B8E330,B8EA90,80814BF0,gamestates
|
||||
ovl_kaleido_scope,CB1820,CC9C60,B8EA90,B9D130,80815DE0,kaleido_scope
|
||||
ovl_player_actor,CC9C60,CFE940,B9D130,BC0AC0,8082E260,actors
|
||||
ovl_En_Test,CFE940,CFF650,BC0AC0,BC1550,80863060,actors
|
||||
ovl_En_GirlA,CFF650,D01150,BC1550,BC2210,80863D70,actors
|
||||
ovl_En_Part,D01150,D01770,BC2210,BC2760,80865870,actors
|
||||
ovl_En_Light,D01770,D025D0,BC2760,BC3150,80865E90,actors
|
||||
ovl_En_Door,D025D0,D03990,BC3150,BC40E0,80866CF0,actors
|
||||
ovl_En_Box,D03990,D05B40,BC40E0,BC5970,808680C0,actors
|
||||
ovl_En_Pametfrog,D05B40,D09BD0,BC5970,BC83F0,8086A270,actors
|
||||
ovl_En_Okuta,D09BD0,D0CBC0,BC83F0,BCA570,8086E300,actors
|
||||
ovl_En_Bom,D0CBC0,D10460,BCA570,BCCA10,808712F0,actors
|
||||
ovl_En_Wallmas,D10460,D122C0,BCCA10,BCDF90,80874D50,actors
|
||||
ovl_En_Dodongo,D122C0,D15340,BCDF90,BD01D0,80876BB0,actors
|
||||
ovl_En_Firefly,D15340,D17310,BD01D0,BD17F0,80879C30,actors
|
||||
ovl_En_Horse,D17310,D25EE0,BD17F0,BDA240,8087BC00,actors
|
||||
ovl_En_Arrow,D25EE0,D28160,BDA240,BDBAC0,8088A7D0,actors
|
||||
ovl_En_Elf,D28160,D2CCB0,BDBAC0,BDEE20,8088CA50,actors
|
||||
ovl_En_Niw,D2CCB0,D2F520,BDEE20,BE0C10,808915A0,actors
|
||||
ovl_En_Tite,D2F520,D32C60,BE0C10,BE3150,80893E10,actors
|
||||
ovl_En_Peehat,D32C60,D35680,BE3150,BE4E50,80897550,actors
|
||||
ovl_En_Holl,D35680,D36400,BE4E50,BE5890,80899F70,actors
|
||||
ovl_En_Dinofos,D36400,D3A600,BE5890,BE8430,8089ACF0,actors
|
||||
ovl_En_Hata,D3A600,D3AAB0,BE8430,BE8860,8089EEF0,actors
|
||||
ovl_En_Zl1,D3AAB0,D3AB40,BE8860,BE88C0,8089F3A0,actors
|
||||
ovl_En_Viewer,D3AB40,D3B1F0,BE88C0,BE8DB0,8089F430,actors
|
||||
ovl_En_Bubble,D3B1F0,D3C600,BE8DB0,BE9CF0,8089FAF0,actors
|
||||
ovl_Door_Shutter,D3C600,D3E1E0,BE9CF0,BEB110,808A0F00,actors
|
||||
ovl_En_Boom,D3E1E0,D3EEC0,BEB110,BEBC10,808A2AE0,actors
|
||||
ovl_En_Torch2,D3EEC0,D3F380,BEBC10,BEC030,808A37C0,actors
|
||||
ovl_En_Minifrog,D3F380,D40D60,BEC030,BED2C0,808A3C80,actors
|
||||
ovl_En_St,D40D60,D436E0,BED2C0,BEEFD0,808A5660,actors
|
||||
ovl_Obj_Wturn,D436E0,D43BE0,BEEFD0,BEF3C0,808A7FE0,actors
|
||||
ovl_En_River_Sound,D43BE0,D43E30,BEF3C0,BEF5F0,808A84E0,actors
|
||||
ovl_En_Ossan,D43E30,D48780,BEF5F0,BF2240,808A8730,actors
|
||||
ovl_En_Famos,D48780,D4A720,BF2240,BF3710,808AD080,actors
|
||||
ovl_En_Bombf,D4A720,D4BB30,BF3710,BF46D0,808AF020,actors
|
||||
ovl_En_Am,D4BB30,D4D190,BF46D0,BF56F0,808B0430,actors
|
||||
ovl_En_Dekubaba,D4D190,D51090,BF56F0,BF8030,808B1A90,actors
|
||||
ovl_En_M_Fire1,D51090,D51220,BF8030,BF8180,808B5990,actors
|
||||
ovl_En_M_Thunder,D51220,D531C0,BF8180,BF9610,808B5B20,actors
|
||||
ovl_Bg_Breakwall,D531C0,D542F0,BF9610,BFA200,808B7AC0,actors
|
||||
ovl_Door_Warp1,D542F0,D57F30,BFA200,BFC950,808B8BF0,actors
|
||||
ovl_Obj_Syokudai,D57F30,D58D00,BFC950,BFD480,808BC840,actors
|
||||
ovl_Item_B_Heart,D58D00,D590F0,BFD480,BFD7B0,808BD620,actors
|
||||
ovl_En_Dekunuts,D590F0,D5B130,BFD7B0,BFED30,808BDA10,actors
|
||||
ovl_En_Bbfall,D5B130,D5CF40,BFED30,C00430,808BFA50,actors
|
||||
ovl_Arms_Hook,D5CF40,D5DC50,C00430,C00E90,808C1860,actors
|
||||
ovl_En_Bb,D5DC50,D5F960,C00E90,C02440,808C2570,actors
|
||||
ovl_Bg_Keikoku_Spr,D5F960,D5FB10,C02440,C025B0,808C4280,actors
|
||||
ovl_En_Wood02,D5FB10,D60E80,C025B0,C03500,808C4430,actors
|
||||
ovl_En_Death,D60E80,D65FB0,C03500,C06D80,808C57B0,actors
|
||||
ovl_En_Minideath,D65FB0,D68150,C06D80,C08520,808CA8E0,actors
|
||||
ovl_En_Vm,D68150,D69630,C08520,C09500,808CCA90,actors
|
||||
ovl_Demo_Effect,D69630,D6A340,C09500,C09FA0,808CDF70,actors
|
||||
ovl_Demo_Kankyo,D6A340,D6C570,C09FA0,C0B5F0,808CEC80,actors
|
||||
ovl_En_Floormas,D6C570,D6FD10,C0B5F0,C0D900,808D0EB0,actors
|
||||
ovl_En_Rd,D6FD10,D73440,C0D900,C0F9E0,808D4650,actors
|
||||
ovl_Bg_F40_Flift,D73440,D737C0,C0F9E0,C0FCB0,808D7D80,actors
|
||||
ovl_Bg_Heavy_Block,D737C0,D75040,C0FCB0,C10EB0,808D8100,actors
|
||||
ovl_Obj_Mure,D75040,D760B0,C10EB0,C11A30,808D9980,actors
|
||||
ovl_En_Sw,D760B0,D795F0,C11A30,C13F90,808DA9F0,actors
|
||||
ovl_Object_Kankyo,D795F0,D7BD20,C13F90,C15A60,808DDF30,actors
|
||||
ovl_En_Horse_Link_Child,D7BD20,D7D930,C15A60,C16B00,808E0670,actors
|
||||
ovl_Door_Ana,D7D930,D7DFC0,C16B00,C17040,808E2280,actors
|
||||
ovl_En_Encount1,D7DFC0,D7E6D0,C17040,C17590,808E2910,actors
|
||||
ovl_Demo_Tre_Lgt,D7E6D0,D7EDF0,C17590,C17B70,808E3020,actors
|
||||
ovl_En_Encount2,D7EDF0,D7F870,C17B70,C18430,808E3740,actors
|
||||
ovl_En_Fire_Rock,D7F870,D7F900,C18430,C18490,808E41C0,actors
|
||||
ovl_Bg_Ctower_Rot,D7F900,D7FE90,C18490,C18900,808E4250,actors
|
||||
ovl_Mir_Ray,D7FE90,D817A0,C18900,C19D40,808E47E0,actors
|
||||
ovl_En_Sb,D817A0,D82880,C19D40,C1A920,808E60F0,actors
|
||||
ovl_En_Bigslime,D82880,D8EAC0,C1A920,C22350,808E71D0,actors
|
||||
ovl_En_Karebaba,D8EAC0,D90970,C22350,C23860,808F3410,actors
|
||||
ovl_En_In,D90970,D94DB0,C23860,C26260,808F52C0,actors
|
||||
ovl_En_Bom_Chu,D94DB0,D963A0,C26260,C273A0,808F9700,actors
|
||||
ovl_En_Horse_Game_Check,D963A0,D97700,C273A0,C28020,808FACF0,actors
|
||||
ovl_En_Rr,D97700,D99E50,C28020,C29D10,808FC050,actors
|
||||
ovl_En_Fr,D99E50,D99FC0,C29D10,C29E30,808FE7A0,actors
|
||||
ovl_En_Fishing,D99FC0,DADAE0,C29E30,C37360,808FE910,actors
|
||||
ovl_Obj_Oshihiki,DADAE0,DAF390,C37360,C384A0,80919500,actors
|
||||
ovl_Eff_Dust,DAF390,DB0780,C384A0,C39120,8091ADB0,actors
|
||||
ovl_Bg_Umajump,DB0780,DB1090,C39120,C397C0,8091C1A0,actors
|
||||
ovl_En_Insect,DB1090,DB2890,C397C0,C3A7A0,8091CAB0,actors
|
||||
ovl_En_Butte,DB2890,DB3E20,C3A7A0,C3B720,8091E2B0,actors
|
||||
ovl_En_Fish,DB3E20,DB66E0,C3B720,C3D2B0,8091F840,actors
|
||||
ovl_Item_Etcetera,DB66E0,DB6B50,C3D2B0,C3D600,80922100,actors
|
||||
ovl_Arrow_Fire,DB6B50,DB8C30,C3D600,C3F1D0,80922570,actors
|
||||
ovl_Arrow_Ice,DB8C30,DBAAF0,C3F1D0,C40A40,80924660,actors
|
||||
ovl_Arrow_Light,DBAAF0,DBC990,C40A40,C42300,80926530,actors
|
||||
ovl_Obj_Kibako,DBC990,DBDDA0,C42300,C43130,809283E0,actors
|
||||
ovl_Obj_Tsubo,DBDDA0,DC00F0,C43130,C446E0,809297F0,actors
|
||||
ovl_En_Ik,DC00F0,DC2D10,C446E0,C46510,8092BB40,actors
|
||||
ovl_Demo_Shd,DC2D10,DC2DA0,C46510,C46570,8092E760,actors
|
||||
ovl_En_Dns,DC2DA0,DC4700,C46570,C477E0,8092E7F0,actors
|
||||
ovl_Elf_Msg,DC4700,DC4C80,C477E0,C47BE0,80930150,actors
|
||||
ovl_En_Honotrap,DC4C80,DC6F50,C47BE0,C494C0,809306D0,actors
|
||||
ovl_En_Tubo_Trap,DC6F50,DC7CD0,C494C0,C49E90,809329A0,actors
|
||||
ovl_Obj_Ice_Poly,DC7CD0,DC8C00,C49E90,C4AA80,80933720,actors
|
||||
ovl_En_Fz,DC8C00,DCB150,C4AA80,C4C480,80934650,actors
|
||||
ovl_En_Kusa,DCB150,DCD240,C4C480,C4DD90,80936BA0,actors
|
||||
ovl_Obj_Bean,DCD240,DCF900,C4DD90,C4F710,80938EB0,actors
|
||||
ovl_Obj_Bombiwa,DCF900,DD1120,C4F710,C508E0,8093B570,actors
|
||||
ovl_Obj_Switch,DD1120,DD3900,C508E0,C52110,8093CD90,actors
|
||||
ovl_Obj_Lift,DD3900,DD43E0,C52110,C52A20,8093F580,actors
|
||||
ovl_Obj_Hsblock,DD43E0,DD4960,C52A20,C52E90,80940060,actors
|
||||
ovl_En_Okarina_Tag,DD4960,DD4F10,C52E90,C53320,809405E0,actors
|
||||
ovl_En_Goroiwa,DD4F10,DD9B20,C53320,C569A0,80940B90,actors
|
||||
ovl_En_Daiku,DD9B20,DDA8D0,C569A0,C57450,809457A0,actors
|
||||
ovl_En_Nwc,DDA8D0,DDBC40,C57450,C58340,80946550,actors
|
||||
ovl_Item_Inbox,DDBC40,DDBDA0,C58340,C58450,809478C0,actors
|
||||
ovl_En_Ge1,DDBDA0,DDCDF0,C58450,C59060,80947A20,actors
|
||||
ovl_Obj_Blockstop,DDCDF0,DDD020,C59060,C59250,80948A70,actors
|
||||
ovl_En_Sda,DDD020,DDE670,C59250,C5A120,80948CA0,actors
|
||||
ovl_En_Clear_Tag,DDE670,DE4610,C5A120,C5DB30,8094A3B0,actors
|
||||
ovl_En_Gm,DE4610,DE8D50,C5DB30,C60940,80950350,actors
|
||||
ovl_En_Ms,DE8D50,DE9380,C60940,C60E20,80954A90,actors
|
||||
ovl_En_Hs,DE9380,DEA1C0,C60E20,C61910,809550C0,actors
|
||||
ovl_Bg_Ingate,DEA1C0,DEB070,C61910,C62470,80955F00,actors
|
||||
ovl_En_Kanban,DEB070,DEE800,C62470,C646B0,80956DB0,actors
|
||||
ovl_En_Attack_Niw,DEE800,DEFA20,C646B0,C653F0,8095A540,actors
|
||||
ovl_En_Mk,DEFA20,DF0C80,C653F0,C66120,8095B760,actors
|
||||
ovl_En_Owl,DF0C80,DF3ED0,C66120,C681F0,8095C9C0,actors
|
||||
ovl_En_Ishi,DF3ED0,DF6300,C681F0,C69C60,8095FC10,actors
|
||||
ovl_Obj_Hana,DF6300,DF63E0,C69C60,C69D20,80962040,actors
|
||||
ovl_Obj_Lightswitch,DF63E0,DF74E0,C69D20,C6A880,80962120,actors
|
||||
ovl_Obj_Mure2,DF74E0,DF7ED0,C6A880,C6AFE0,80963220,actors
|
||||
ovl_En_Fu,DF7ED0,DFBE40,C6AFE0,C6DA00,80963C10,actors
|
||||
ovl_En_Stream,DFBE40,DFC3A0,C6DA00,C6DEA0,80967B80,actors
|
||||
ovl_En_Mm,DFC3A0,DFCC00,C6DEA0,C6E560,809680E0,actors
|
||||
ovl_En_Weather_Tag,DFCC00,DFE1C0,C6E560,C6F310,80968940,actors
|
||||
ovl_En_Ani,DFE1C0,DFEFA0,C6F310,C6FD30,80969F00,actors
|
||||
ovl_En_Js,DFEFA0,E01890,C6FD30,C717C0,8096ACE0,actors
|
||||
ovl_En_Okarina_Effect,E01890,E01B40,C717C0,C719D0,8096D5D0,actors
|
||||
ovl_En_Mag,E01B40,E05A30,C719D0,C73A30,8096D880,actors
|
||||
ovl_Elf_Msg2,E05A30,E05F70,C73A30,C73DC0,80971770,actors
|
||||
ovl_Bg_F40_Swlift,E05F70,E063E0,C73DC0,C74190,80971CB0,actors
|
||||
ovl_En_Kakasi,E063E0,E090E0,C74190,C75E70,80972130,actors
|
||||
ovl_Obj_Makeoshihiki,E090E0,E09410,C75E70,C76160,80974E30,actors
|
||||
ovl_Oceff_Spot,E09410,E0A320,C76160,C76E40,80975160,actors
|
||||
ovl_En_Torch,E0A320,E0A410,C76E40,C76F20,80976070,actors
|
||||
ovl_Shot_Sun,E0A410,E0AA70,C76F20,C77450,80976160,actors
|
||||
ovl_Obj_Roomtimer,E0AA70,E0AD10,C77450,C77670,809767C0,actors
|
||||
ovl_En_Ssh,E0AD10,E0D360,C77670,C790B0,80976A60,actors
|
||||
ovl_Oceff_Wipe,E0D360,E0E0D0,C790B0,C79C50,809790B0,actors
|
||||
ovl_Effect_Ss_Dust,E0E0D0,E0E8C0,C79C50,C7A2C0,80979E30,effects
|
||||
ovl_Effect_Ss_Kirakira,E0E8C0,E0EF30,C7A2C0,C7A840,8097A620,effects
|
||||
ovl_Effect_Ss_Bomb2,E0EF30,E0F790,C7A840,C7AF00,8097AC90,effects
|
||||
ovl_Effect_Ss_Blast,E0F790,E0FAF0,C7AF00,C7B240,8097B4F0,effects
|
||||
ovl_Effect_Ss_G_Spk,E0FAF0,E10070,C7B240,C7B730,8097B850,effects
|
||||
ovl_Effect_Ss_D_Fire,E10070,E10480,C7B730,C7BB00,8097BDD0,effects
|
||||
ovl_Effect_Ss_Bubble,E10480,E109F0,C7BB00,C7BFB0,8097C1E0,effects
|
||||
ovl_Effect_Ss_G_Ripple,E109F0,E10F10,C7BFB0,C7C440,8097C750,effects
|
||||
ovl_Effect_Ss_G_Splash,E10F10,E11330,C7C440,C7C790,8097CC70,effects
|
||||
ovl_Effect_Ss_G_Fire,E11330,E11540,C7C790,C7C980,8097D090,effects
|
||||
ovl_Effect_Ss_Lightning,E11540,E11C20,C7C980,C7CFC0,8097D2A0,effects
|
||||
ovl_Effect_Ss_Dt_Bubble,E11C20,E12130,C7CFC0,C7D430,8097D980,effects
|
||||
ovl_Effect_Ss_Hahen,E12130,E126D0,C7D430,C7D8A0,8097DE90,effects
|
||||
ovl_Effect_Ss_Stick,E126D0,E12990,C7D8A0,C7DB30,8097E430,effects
|
||||
ovl_Effect_Ss_Sibuki,E12990,E12FF0,C7DB30,C7E0E0,8097E6F0,effects
|
||||
ovl_Effect_Ss_Stone1,E12FF0,E13350,C7E0E0,C7E410,8097ED50,effects
|
||||
ovl_Effect_Ss_Hitmark,E13350,E13850,C7E410,C7E860,8097F0B0,effects
|
||||
ovl_Effect_Ss_Fhg_Flash,E13850,E142D0,C7E860,C7EEF0,8097F5B0,effects
|
||||
ovl_Effect_Ss_K_Fire,E142D0,E14710,C7EEF0,C7F300,80980030,effects
|
||||
ovl_Effect_Ss_Solder_Srch_Ball,E14710,E14B60,C7F300,C7F6D0,80980470,effects
|
||||
ovl_Effect_Ss_Kakera,E14B60,E15BA0,C7F6D0,C802F0,809808C0,effects
|
||||
ovl_Effect_Ss_Ice_Piece,E15BA0,E15FA0,C802F0,C806C0,80981900,effects
|
||||
ovl_Effect_Ss_En_Ice,E15FA0,E16750,C806C0,C80D70,80981D00,effects
|
||||
ovl_Effect_Ss_Fire_Tail,E16750,E16E30,C80D70,C813A0,809824B0,effects
|
||||
ovl_Effect_Ss_En_Fire,E16E30,E174A0,C813A0,C81980,80982B90,effects
|
||||
ovl_Effect_Ss_Extra,E174A0,E17810,C81980,C81CE0,80983200,effects
|
||||
ovl_Effect_Ss_Dead_Db,E17810,E17C20,C81CE0,C820B0,80983570,effects
|
||||
ovl_Effect_Ss_Dead_Dd,E17C20,E181B0,C820B0,C825C0,80983980,effects
|
||||
ovl_Effect_Ss_Dead_Ds,E181B0,E18630,C825C0,C829F0,80983F10,effects
|
||||
ovl_Oceff_Storm,E18630,E1A3F0,C829F0,C845E0,80984390,actors
|
||||
ovl_Obj_Demo,E1A3F0,E1A7C0,C845E0,C848B0,80986150,actors
|
||||
ovl_En_Minislime,E1A7C0,E1CB10,C848B0,C860B0,80986520,actors
|
||||
ovl_En_Nutsball,E1CB10,E1D140,C860B0,C86660,80988870,actors
|
||||
ovl_Oceff_Wipe2,E1D140,E1E8C0,C86660,C874B0,80988EA0,actors
|
||||
ovl_Oceff_Wipe3,E1E8C0,E20030,C874B0,C88750,8098A630,actors
|
||||
ovl_En_Dg,E20030,E23910,C88750,C8AB80,8098BDB0,actors
|
||||
ovl_En_Si,E23910,E23D30,C8AB80,C8AE90,8098F690,actors
|
||||
ovl_Obj_Comb,E23D30,E254B0,C8AE90,C8BF20,8098FAB0,actors
|
||||
ovl_Obj_Kibako2,E254B0,E25E50,C8BF20,C8C700,80991230,actors
|
||||
ovl_En_Hs2,E25E50,E25F30,C8C700,C8C7B0,80991BD0,actors
|
||||
ovl_Obj_Mure3,E25F30,E266F0,C8C7B0,C8CDB0,80991CB0,actors
|
||||
ovl_En_Tg,E266F0,E27200,C8CDB0,C8D6A0,80992470,actors
|
||||
ovl_En_Wf,E27200,E2B6A0,C8D6A0,C90260,80992F80,actors
|
||||
ovl_En_Skb,E2B6A0,E2E960,C90260,C92300,80997420,actors
|
||||
ovl_En_Gs,E2E960,E317E0,C92300,C944C0,8099A6E0,actors
|
||||
ovl_Obj_Sound,E317E0,E319F0,C944C0,C94670,8099D560,actors
|
||||
ovl_En_Crow,E319F0,E33150,C94670,C957C0,8099D770,actors
|
||||
ovl_En_Cow,E33150,E34640,C957C0,C96550,8099EED0,actors
|
||||
ovl_Oceff_Wipe4,E34640,E35660,C96550,C97170,809A03C0,actors
|
||||
ovl_En_Zo,E35660,E36600,C97170,C97D80,809A13F0,actors
|
||||
ovl_Effect_Ss_Ice_Smoke,E36600,E36910,C97D80,C98070,809A2390,effects
|
||||
ovl_Obj_Makekinsuta,E36910,E36D80,C98070,C98420,809A26A0,actors
|
||||
ovl_En_Ge3,E36D80,E37DF0,C98420,C99050,809A2B10,actors
|
||||
ovl_Obj_Hamishi,E37DF0,E38A80,C99050,C99A90,809A3B80,actors
|
||||
ovl_En_Zl4,E38A80,E38F00,C99A90,C99E30,809A4810,actors
|
||||
ovl_En_Mm2,E38F00,E39A30,C99E30,C9A480,809A4C90,actors
|
||||
ovl_Door_Spiral,E39A30,E3A2B0,C9A480,C9AB50,809A57C0,actors
|
||||
ovl_Obj_Pzlblock,E3A2B0,E3B090,C9AB50,C9B570,809A6040,actors
|
||||
ovl_Obj_Toge,E3B090,E3BCD0,C9B570,C9BF40,809A6E20,actors
|
||||
ovl_Obj_Armos,E3BCD0,E3CBE0,C9BF40,C9CA90,809A7A60,actors
|
||||
ovl_Obj_Boyo,E3CBE0,E3D150,C9CA90,C9CF50,809A8970,actors
|
||||
ovl_En_Grasshopper,E3D150,E40000,C9CF50,C9F020,809A8EE0,actors
|
||||
ovl_Obj_Grass,E40000,E41C90,C9F020,CA0640,809ABD90,actors
|
||||
ovl_Obj_Grass_Carry,E41C90,E42C10,CA0640,CA1290,809ADAE0,actors
|
||||
ovl_Obj_Grass_Unit,E42C10,E432E0,CA1290,CA17A0,809AEA60,actors
|
||||
ovl_Bg_Fire_Wall,E432E0,E43B90,CA17A0,CA1EA0,809AF130,actors
|
||||
ovl_En_Bu,E43B90,E43D40,CA1EA0,CA2020,809AF9E0,actors
|
||||
ovl_En_Encount3,E43D40,E446E0,CA2020,CA2880,809AFB90,actors
|
||||
ovl_En_Jso,E446E0,E48350,CA2880,CA5290,809B0530,actors
|
||||
ovl_Obj_Chikuwa,E48350,E48EF0,CA5290,CA5C70,809B41A0,actors
|
||||
ovl_En_Knight,E48EF0,E55F70,CA5C70,CAE580,809B4D40,actors
|
||||
ovl_En_Warp_tag,E55F70,E568F0,CAE580,CAED40,809C3550,actors
|
||||
ovl_En_Aob_01,E568F0,E596B0,CAED40,CB0D10,809C3ED0,actors
|
||||
ovl_En_Boj_01,E596B0,E59740,CB0D10,CB0D70,809C6C90,actors
|
||||
ovl_En_Boj_02,E59740,E597D0,CB0D70,CB0DD0,809C6D20,actors
|
||||
ovl_En_Boj_03,E597D0,E59860,CB0DD0,CB0E30,809C6DB0,actors
|
||||
ovl_En_Encount4,E59860,E5A0C0,CB0E30,CB1500,809C6E40,actors
|
||||
ovl_En_Bom_Bowl_Man,E5A0C0,E5BE40,CB1500,CB29E0,809C76A0,actors
|
||||
ovl_En_Syateki_Man,E5BE40,E5F3B0,CB29E0,CB4B50,809C9420,actors
|
||||
ovl_Bg_Icicle,E5F3B0,E5FD40,CB4B50,CB5300,809CC990,actors
|
||||
ovl_En_Syateki_Crow,E5FD40,E60B50,CB5300,CB5E90,809CD320,actors
|
||||
ovl_En_Boj_04,E60B50,E60BE0,CB5E90,CB5EF0,809CE130,actors
|
||||
ovl_En_Cne_01,E60BE0,E619B0,CB5EF0,CB69D0,809CE1C0,actors
|
||||
ovl_En_Bba_01,E619B0,E62730,CB69D0,CB7490,809CEF90,actors
|
||||
ovl_En_Bji_01,E62730,E63800,CB7490,CB8090,809CFD10,actors
|
||||
ovl_Bg_Spdweb,E63800,E64C90,CB8090,CB8F90,809D0DE0,actors
|
||||
ovl_En_Mt_tag,E64C90,E65E60,CB8F90,CB9CF0,809D2270,actors
|
||||
ovl_Boss_01,E65E60,E6E340,CB9CF0,CBF770,809D3440,actors
|
||||
ovl_Boss_02,E6E340,E745B0,CBF770,CC3C10,809DD0E0,actors
|
||||
ovl_Boss_03,E745B0,E7B6A0,CC3C10,CC89F0,809E5690,actors
|
||||
ovl_Boss_04,E7B6A0,E7DB60,CC89F0,CCA550,809EEF80,actors
|
||||
ovl_Boss_05,E7DB60,E817B0,CCA550,CCCED0,809F1450,actors
|
||||
ovl_Boss_06,E817B0,E83A00,CCCED0,CCE8C0,809F50B0,actors
|
||||
ovl_Boss_07,E83A00,E98AF0,CCE8C0,CDCA80,809F7910,actors
|
||||
ovl_Bg_Dy_Yoseizo,E98AF0,E9A9D0,CDCA80,CDE150,80A0D860,actors
|
||||
ovl_En_Boj_05,E9A9D0,E9AA60,CDE150,CDE1B0,80A0F740,actors
|
||||
ovl_En_Sob1,E9AA60,E9F2F0,CDE1B0,CE1070,80A0F7D0,actors
|
||||
ovl_En_Go,E9F2F0,EA5080,CE1070,CE5160,80A14060,actors
|
||||
ovl_En_Raf,EA5080,EA7A80,CE5160,CE6D20,80A19DF0,actors
|
||||
ovl_Obj_Funen,EA7A80,EA7C50,CE6D20,CE6EE0,80A1C7F0,actors
|
||||
ovl_Obj_Raillift,EA7C50,EA8840,CE6EE0,CE7890,80A1C9C0,actors
|
||||
ovl_Bg_Numa_Hana,EA8840,EA9710,CE7890,CE8380,80A1D5B0,actors
|
||||
ovl_Obj_Flowerpot,EA9710,EABB70,CE8380,CE9C50,80A1E480,actors
|
||||
ovl_Obj_Spinyroll,EABB70,EAD530,CE9C50,CEAF00,80A20B00,actors
|
||||
ovl_Dm_Hina,EAD530,EADF70,CEAF00,CEB6D0,80A224C0,actors
|
||||
ovl_En_Syateki_Wf,EADF70,EAF270,CEB6D0,CEC520,80A22F00,actors
|
||||
ovl_Obj_Skateblock,EAF270,EB0E60,CEC520,CED9B0,80A24200,actors
|
||||
ovl_Effect_En_Ice_Block,EB0E60,EB11B0,CED9B0,CEDCC0,80A25DF0,effects
|
||||
ovl_Obj_Iceblock,EB11B0,EB5640,CEDCC0,CF0CB0,80A26140,actors
|
||||
ovl_En_Bigpamet,EB5640,EB7BA0,CF0CB0,CF2700,80A2A5D0,actors
|
||||
ovl_Bg_Dblue_Movebg,EB7BA0,EB9D10,CF2700,CF3FE0,80A2CB30,actors
|
||||
ovl_En_Syateki_Dekunuts,EB9D10,EBAE20,CF3FE0,CF4CF0,80A2ECB0,actors
|
||||
ovl_Elf_Msg3,EBAE20,EBB390,CF4CF0,CF5100,80A2FDC0,actors
|
||||
ovl_En_Fg,EBB390,EBC8B0,CF5100,CF6090,80A30330,actors
|
||||
ovl_Dm_Ravine,EBC8B0,EBCA70,CF6090,CF6200,80A31850,actors
|
||||
ovl_Dm_Sa,EBCA70,EBCEB0,CF6200,CF6570,80A31A10,actors
|
||||
ovl_En_Slime,EBCEB0,EC0310,CF6570,CF88F0,80A31E50,actors
|
||||
ovl_En_Pr,EC0310,EC1C10,CF88F0,CF9BE0,80A352C0,actors
|
||||
ovl_Obj_Toudai,EC1C10,EC2810,CF9BE0,CFA3C0,80A36BC0,actors
|
||||
ovl_Obj_Entotu,EC2810,EC35C0,CFA3C0,CFAC30,80A377C0,actors
|
||||
ovl_Obj_Bell,EC35C0,EC40A0,CFAC30,CFB400,80A38570,actors
|
||||
ovl_En_Syateki_Okuta,EC40A0,EC5F80,CFB400,CFC6E0,80A39050,actors
|
||||
ovl_Obj_Shutter,EC5F80,EC6240,CFC6E0,CFC960,80A3AF30,actors
|
||||
ovl_Dm_Zl,EC6240,EC6A50,CFC960,CFCFC0,80A3B1F0,actors
|
||||
ovl_En_Ru,EC6A50,EC7760,CFCFC0,CFD9E0,80A3BA00,actors
|
||||
ovl_En_Elfgrp,EC7760,EC8D30,CFD9E0,CFE960,80A3C710,actors
|
||||
ovl_Dm_Tsg,EC8D30,EC9150,CFE960,CFED20,80A3DCE0,actors
|
||||
ovl_En_Baguo,EC9150,ECA5B0,CFED20,CFFD50,80A3E100,actors
|
||||
ovl_Obj_Vspinyroll,ECA5B0,ECB750,CFFD50,D00AB0,80A3F560,actors
|
||||
ovl_Obj_Smork,ECB750,ECC460,D00AB0,D012B0,80A40700,actors
|
||||
ovl_En_Test2,ECC460,ECC8B0,D012B0,D01640,80A41410,actors
|
||||
ovl_En_Test3,ECC8B0,ECFE30,D01640,D03D10,80A41860,actors
|
||||
ovl_En_Test4,ECFE30,ED1860,D03D10,D04DE0,80A44E30,actors
|
||||
ovl_En_Bat,ED1860,ED2FF0,D04DE0,D06060,80A46870,actors
|
||||
ovl_En_Sekihi,ED2FF0,ED3710,D06060,D06630,80A48010,actors
|
||||
ovl_En_Wiz,ED3710,ED7390,D06630,D09110,80A48730,actors
|
||||
ovl_En_Wiz_Brock,ED7390,ED7A70,D09110,D096D0,80A4C3B0,actors
|
||||
ovl_En_Wiz_Fire,ED7A70,EDA860,D096D0,D0B700,80A4CA90,actors
|
||||
ovl_Eff_Change,EDA860,EDAD80,D0B700,D0BB80,80A4F880,actors
|
||||
ovl_Dm_Statue,EDAD80,EDAE60,D0BB80,D0BC30,80A4FDA0,actors
|
||||
ovl_Obj_Fireshield,EDAE60,EDBDC0,D0BC30,D0C860,80A4FE80,actors
|
||||
ovl_Bg_Ladder,EDBDC0,EDC2A0,D0C860,D0CC50,80A50DE0,actors
|
||||
ovl_En_Mkk,EDC2A0,EDDE10,D0CC50,D0E070,80A512C0,actors
|
||||
ovl_Demo_Getitem,EDDE10,EDE1D0,D0E070,D0E3A0,80A52E30,actors
|
||||
ovl_En_Dnb,EDE1D0,EDF140,D0E3A0,D0EFA0,80A531F0,actors
|
||||
ovl_En_Dnh,EDF140,EDF8F0,D0EFA0,D0F600,80A54160,actors
|
||||
ovl_En_Dnk,EDF8F0,EE0930,D0F600,D10080,80A54910,actors
|
||||
ovl_En_Dnq,EE0930,EE1C10,D10080,D10D70,80A55950,actors
|
||||
ovl_Bg_Keikoku_Saku,EE1C10,EE2070,D10D70,D11110,80A56C30,actors
|
||||
ovl_Obj_Hugebombiwa,EE2070,EE4550,D11110,D128B0,80A57090,actors
|
||||
ovl_En_Firefly2,EE4550,EE45E0,D128B0,D12910,80A59570,actors
|
||||
ovl_En_Rat,EE45E0,EE6C30,D12910,D14560,80A59600,actors
|
||||
ovl_En_Water_Effect,EE6C30,EE95F0,D14560,D161A0,80A5BC50,actors
|
||||
ovl_En_Kusa2,EE95F0,EED650,D161A0,D18EC0,80A5E610,actors
|
||||
ovl_Bg_Spout_Fire,EED650,EEDDE0,D18EC0,D19530,80A63FD0,actors
|
||||
ovl_En_Dy_Extra,EEDDE0,EEE380,D19530,D19A00,80A64760,actors
|
||||
ovl_En_Bal,EEE380,EF1010,D19A00,D1B850,80A64D00,actors
|
||||
ovl_En_Ginko_Man,EF1010,EF2CF0,D1B850,D1C990,80A67990,actors
|
||||
ovl_En_Warp_Uzu,EF2CF0,EF30E0,D1C990,D1CCB0,80A69670,actors
|
||||
ovl_Obj_Driftice,EF30E0,EF4420,D1CCB0,D1DAF0,80A69A60,actors
|
||||
ovl_En_Look_Nuts,EF4420,EF5300,D1DAF0,D1E5E0,80A6ADA0,actors
|
||||
ovl_En_Mushi2,EF5300,EF8A20,D1E5E0,D20AC0,80A6BC80,actors
|
||||
ovl_En_Fall,EF8A20,EFB450,D20AC0,D226C0,80A6F3A0,actors
|
||||
ovl_En_Mm3,EFB450,EFCA10,D226C0,D23520,80A724E0,actors
|
||||
ovl_Bg_Crace_Movebg,EFCA10,EFD4D0,D23520,D23CE0,80A73AA0,actors
|
||||
ovl_En_Dno,EFD4D0,F002B0,D23CE0,D25B00,80A74580,actors
|
||||
ovl_En_Pr2,F002B0,F021D0,D25B00,D27170,80A77360,actors
|
||||
ovl_En_Prz,F021D0,F037D0,D27170,D28280,80A79280,actors
|
||||
ovl_En_Jso2,F037D0,F08130,D28280,D2B4F0,80A7A880,actors
|
||||
ovl_Obj_Etcetera,F08130,F08E50,D2B4F0,D2BEE0,80A7F1E0,actors
|
||||
ovl_En_Egol,F08E50,F0D710,D2BEE0,D2F0F0,80A7FF00,actors
|
||||
ovl_Obj_Mine,F0D710,F10F10,D2F0F0,D317C0,80A847C0,actors
|
||||
ovl_Obj_Purify,F10F10,F11860,D317C0,D31E80,80A882C0,actors
|
||||
ovl_En_Tru,F11860,F179A0,D31E80,D35BC0,80A88C10,actors
|
||||
ovl_En_Trt,F179A0,F1C4F0,D35BC0,D38C20,80A8ED50,actors
|
||||
ovl_En_Test5,F1C4F0,F1C870,D38C20,D38F20,80A938A0,actors
|
||||
ovl_En_Test6,F1C870,F20B60,D38F20,D3BC30,80A93C20,actors
|
||||
ovl_En_Az,F20B60,F25E90,D3BC30,D3F1C0,80A98030,actors
|
||||
ovl_En_Estone,F25E90,F26CC0,D3F1C0,D3FD50,80A9D380,actors
|
||||
ovl_Bg_Hakugin_Post,F26CC0,F29DB0,D3FD50,D42090,80A9E1B0,actors
|
||||
ovl_Dm_Opstage,F29DB0,F2A210,D42090,D423E0,80AA2E30,actors
|
||||
ovl_Dm_Stk,F2A210,F2F9E0,D423E0,D45500,80AA3290,actors
|
||||
ovl_Dm_Char00,F2F9E0,F32640,D45500,D46C50,80AA8A60,actors
|
||||
ovl_Dm_Char01,F32640,F35280,D46C50,D48630,80AAB6C0,actors
|
||||
ovl_Dm_Char02,F35280,F358F0,D48630,D48B40,80AAE310,actors
|
||||
ovl_Dm_Char03,F358F0,F36090,D48B40,D49110,80AAE980,actors
|
||||
ovl_Dm_Char04,F36090,F369F0,D49110,D498D0,80AAF120,actors
|
||||
ovl_Dm_Char05,F369F0,F38AD0,D498D0,D4AA30,80AAFA80,actors
|
||||
ovl_Dm_Char06,F38AD0,F38E10,D4AA30,D4ACF0,80AB1B60,actors
|
||||
ovl_Dm_Char07,F38E10,F394A0,D4ACF0,D4B110,80AB1EA0,actors
|
||||
ovl_Dm_Char08,F394A0,F3C1F0,D4B110,D4CFB0,80AB2530,actors
|
||||
ovl_Dm_Char09,F3C1F0,F3CB70,D4CFB0,D4D7D0,80AB5280,actors
|
||||
ovl_Obj_Tokeidai,F3CB70,F3F0F0,D4D7D0,D4F040,80AB5C00,actors
|
||||
ovl_En_Mnk,F3F0F0,F44B70,D4F040,D52440,80AB8180,actors
|
||||
ovl_En_Egblock,F44B70,F454B0,D52440,D52BC0,80ABDC00,actors
|
||||
ovl_En_Guard_Nuts,F454B0,F46390,D52BC0,D53770,80ABE540,actors
|
||||
ovl_Bg_Hakugin_Bombwall,F46390,F47580,D53770,D54460,80ABF420,actors
|
||||
ovl_Obj_Tokei_Tobira,F47580,F47BE0,D54460,D54A10,80AC0610,actors
|
||||
ovl_Bg_Hakugin_Elvpole,F47BE0,F48050,D54A10,D54DB0,80AC0C70,actors
|
||||
ovl_En_Ma4,F48050,F4ABE0,D54DB0,D56940,80AC10E0,actors
|
||||
ovl_En_Twig,F4ABE0,F4B600,D56940,D571A0,80AC3C70,actors
|
||||
ovl_En_Po_Fusen,F4B600,F4C260,D571A0,D57B90,80AC46D0,actors
|
||||
ovl_En_Door_Etc,F4C260,F4CA80,D57B90,D58230,80AC5330,actors
|
||||
ovl_En_Bigokuta,F4CA80,F4EC80,D58230,D59A80,80AC5B50,actors
|
||||
ovl_Bg_Icefloe,F4EC80,F4F3F0,D59A80,D5A040,80AC7D50,actors
|
||||
ovl_fbdemo_triforce,F4F3F0,F4FB50,D5A040,D5A580,80AC84D0,fbdemos
|
||||
ovl_fbdemo_wipe1,F4FB50,F50AE0,D5A580,D5B010,80AC8C30,fbdemos
|
||||
ovl_fbdemo_wipe3,F50AE0,F527D0,D5B010,D5BB20,80AC9BC0,fbdemos
|
||||
ovl_fbdemo_wipe4,F527D0,F52A90,D5BB20,D5BD60,80ACB8B0,fbdemos
|
||||
ovl_fbdemo_wipe5,F52A90,F52EF0,D5BD60,D5C100,80ACBB70,fbdemos
|
||||
ovl_Effect_Ss_Sbn,F52EF0,F53860,D5C100,D5C870,80ACBFD0,effects
|
||||
ovl_Obj_Ocarinalift,F53860,F54240,D5C870,D5CFD0,80ACC940,actors
|
||||
ovl_En_Time_Tag,F54240,F54EB0,D5CFD0,D5D8C0,80ACD320,actors
|
||||
ovl_Bg_Open_Shutter,F54EB0,F55580,D5D8C0,D5DE80,80ACDF90,actors
|
||||
ovl_Bg_Open_Spot,F55580,F557A0,D5DE80,D5E050,80ACE660,actors
|
||||
ovl_Bg_Fu_Kaiten,F557A0,F55A40,D5E050,D5E2A0,80ACE880,actors
|
||||
ovl_Obj_Aqua,F55A40,F56800,D5E2A0,D5ED30,80ACEB20,actors
|
||||
ovl_En_Elforg,F56800,F58070,D5ED30,D5FE80,80ACF8E0,actors
|
||||
ovl_En_Elfbub,F58070,F586D0,D5FE80,D60470,80AD1150,actors
|
||||
ovl_En_Fu_Mato,F586D0,F59B20,D60470,D614F0,80AD17B0,actors
|
||||
ovl_En_Fu_Kago,F59B20,F5ABD0,D614F0,D621F0,80AD2C00,actors
|
||||
ovl_En_Osn,F5ABD0,F5CF10,D621F0,D63890,80AD3CB0,actors
|
||||
ovl_Bg_Ctower_Gear,F5CF10,F5D720,D63890,D63EE0,80AD5FF0,actors
|
||||
ovl_En_Trt2,F5D720,F5FEC0,D63EE0,D659D0,80AD6800,actors
|
||||
ovl_Obj_Tokei_Step,F5FEC0,F60A70,D659D0,D66320,80AD8FA0,actors
|
||||
ovl_Bg_Lotus,F60A70,F610E0,D66320,D66850,80AD9B50,actors
|
||||
ovl_En_Kame,F610E0,F63550,D66850,D681B0,80ADA1C0,actors
|
||||
ovl_Obj_Takaraya_Wall,F63550,F64760,D681B0,D69010,80ADC630,actors
|
||||
ovl_Bg_Fu_Mizu,F64760,F64A40,D69010,D692A0,80ADDEE0,actors
|
||||
ovl_En_Sellnuts,F64A40,F67E90,D692A0,D6B490,80ADE1C0,actors
|
||||
ovl_Bg_Dkjail_Ivy,F67E90,F686D0,D6B490,D6BB70,80AE1610,actors
|
||||
ovl_Obj_Visiblock,F686D0,F687F0,D6BB70,D6BC60,80AE1E50,actors
|
||||
ovl_En_Takaraya,F687F0,F69900,D6BC60,D6C930,80AE1F70,actors
|
||||
ovl_En_Tsn,F69900,F6B2E0,D6C930,D6DA50,80AE3080,actors
|
||||
ovl_En_Ds2n,F6B2E0,F6B800,D6DA50,D6DE80,80AE4A60,actors
|
||||
ovl_En_Fsn,F6B800,F6FDC0,D6DE80,D70B50,80AE4F80,actors
|
||||
ovl_En_Shn,F6FDC0,F71030,D70B50,D71840,80AE9540,actors
|
||||
ovl_En_Stop_heishi,F71030,F72800,D71840,D729D0,80AEA7B0,actors
|
||||
ovl_Obj_Bigicicle,F72800,F736B0,D729D0,D734F0,80AEBF80,actors
|
||||
ovl_En_Lift_Nuts,F736B0,F760F0,D734F0,D74EF0,80AECE30,actors
|
||||
ovl_En_Tk,F760F0,F79CE0,D74EF0,D776D0,80AEF870,actors
|
||||
ovl_Bg_Market_Step,F79CE0,F79DF0,D776D0,D777C0,80AF3470,actors
|
||||
ovl_Obj_Lupygamelift,F79DF0,F7A4A0,D777C0,D77D70,80AF3580,actors
|
||||
ovl_En_Test7,F7A4A0,F7D530,D77D70,D79FD0,80AF3C30,actors
|
||||
ovl_Obj_Lightblock,F7D530,F7DB90,D79FD0,D7A500,80AF6D20,actors
|
||||
ovl_Mir_Ray2,F7DB90,F7E010,D7A500,D7A8E0,80AF7380,actors
|
||||
ovl_En_Wdhand,F7E010,F80380,D7A8E0,D7C270,80AF7800,actors
|
||||
ovl_En_Gamelupy,F80380,F80A00,D7C270,D7C7E0,80AF9B70,actors
|
||||
ovl_Bg_Danpei_Movebg,F80A00,F81260,D7C7E0,D7CE90,80AFA1F0,actors
|
||||
ovl_En_Snowwd,F81260,F81760,D7CE90,D7D2F0,80AFAA50,actors
|
||||
ovl_En_Pm,F81760,F865C0,D7D2F0,D80440,80AFAF50,actors
|
||||
ovl_En_Gakufu,F865C0,F86FE0,D80440,D80C90,80AFFDB0,actors
|
||||
ovl_Elf_Msg4,F86FE0,F875F0,D80C90,D81110,80B007D0,actors
|
||||
ovl_Elf_Msg5,F875F0,F878A0,D81110,D812E0,80B00DE0,actors
|
||||
ovl_En_Col_Man,F878A0,F88500,D812E0,D81C80,80B01090,actors
|
||||
ovl_En_Talk_Gibud,F88500,F8B5B0,D81C80,D83CB0,80B01CF0,actors
|
||||
ovl_En_Giant,F8B5B0,F8C8F0,D83CB0,D84A30,80B04DA0,actors
|
||||
ovl_Obj_Snowball,F8C8F0,F8EEB0,D84A30,D865D0,80B060E0,actors
|
||||
ovl_Boss_Hakugin,F8EEB0,F99190,D865D0,D8D790,80B086A0,actors
|
||||
ovl_En_Gb2,F99190,F9BA10,D8D790,D8F200,80B12980,actors
|
||||
ovl_En_Onpuman,F9BA10,F9BFE0,D8F200,D8F6B0,80B15200,actors
|
||||
ovl_Bg_Tobira01,F9BFE0,F9C420,D8F6B0,D8FA40,80B157D0,actors
|
||||
ovl_En_Tag_Obj,F9C420,F9C530,D8FA40,D8FB20,80B15C10,actors
|
||||
ovl_Obj_Dhouse,F9C530,F9DD30,D8FB20,D90C00,80B15D20,actors
|
||||
ovl_Obj_Hakaisi,F9DD30,F9F340,D90C00,D91BE0,80B17520,actors
|
||||
ovl_Bg_Hakugin_Switch,F9F340,FA06A0,D91BE0,D92850,80B18B30,actors
|
||||
ovl_En_Snowman,FA06A0,FA3B00,D92850,D94E50,80B19EA0,actors
|
||||
ovl_TG_Sw,FA3B00,FA3F70,D94E50,D951D0,80B1D300,actors
|
||||
ovl_En_Po_Sisters,FA3F70,FA7A70,D951D0,D97A80,80B1D770,actors
|
||||
ovl_En_Pp,FA7A70,FAB6C0,D97A80,D9A430,80B21270,actors
|
||||
ovl_En_Hakurock,FAB6C0,FAC7C0,D9A430,D9B0A0,80B24EC0,actors
|
||||
ovl_En_Hanabi,FAC7C0,FAD910,D9B0A0,D9BEA0,80B25FC0,actors
|
||||
ovl_Obj_Dowsing,FAD910,FADA90,D9BEA0,D9BFB0,80B27110,actors
|
||||
ovl_Obj_Wind,FADA90,FAE1F0,D9BFB0,D9C550,80B27290,actors
|
||||
ovl_En_Racedog,FAE1F0,FAFEB0,D9C550,D9DAE0,80B279F0,actors
|
||||
ovl_En_Kendo_Js,FAFEB0,FB1C60,D9DAE0,D9EEB0,80B296B0,actors
|
||||
ovl_Bg_Botihasira,FB1C60,FB1F50,D9EEB0,D9F150,80B2B460,actors
|
||||
ovl_En_Fish2,FB1F50,FB54B0,D9F150,DA17D0,80B2B750,actors
|
||||
ovl_En_Pst,FB54B0,FB6370,DA17D0,DA2170,80B2ECB0,actors
|
||||
ovl_En_Poh,FB6370,FB9790,DA2170,DA4410,80B2FB70,actors
|
||||
ovl_Obj_Spidertent,FB9790,FBB210,DA4410,DA5660,80B32F90,actors
|
||||
ovl_En_Zoraegg,FBB210,FBD9B0,DA5660,DA70F0,80B34A10,actors
|
||||
ovl_En_Kbt,FBD9B0,FBEC10,DA70F0,DA7E30,80B371B0,actors
|
||||
ovl_En_Gg,FBEC10,FC0D50,DA7E30,DA95D0,80B38410,actors
|
||||
ovl_En_Maruta,FC0D50,FC2AF0,DA95D0,DAA990,80B3A550,actors
|
||||
ovl_Obj_Snowball2,FC2AF0,FC4920,DAA990,DABFD0,80B3C2F0,actors
|
||||
ovl_En_Gg2,FC4920,FC5F30,DABFD0,DAD000,80B3E120,actors
|
||||
ovl_Obj_Ghaka,FC5F30,FC66F0,DAD000,DAD630,80B3F730,actors
|
||||
ovl_En_Dnp,FC66F0,FC7CC0,DAD630,DAE590,80B3FEF0,actors
|
||||
ovl_En_Dai,FC7CC0,FC9D50,DAE590,DAFC30,80B414C0,actors
|
||||
ovl_Bg_Goron_Oyu,FC9D50,FCA4D0,DAFC30,DB01E0,80B43550,actors
|
||||
ovl_En_Kgy,FCA4D0,FCD6A0,DB01E0,DB2060,80B43CD0,actors
|
||||
ovl_En_Invadepoh,FCD6A0,FDA000,DB2060,DB97C0,80B46EA0,actors
|
||||
ovl_En_Gk,FDA000,FDD3F0,DB97C0,DBBAB0,80B53970,actors
|
||||
ovl_En_An,FDD3F0,FE42D0,DBBAB0,DBFD20,80B56D60,actors
|
||||
ovl_En_Bee,FE42D0,FE4E90,DBFD20,DC06B0,80B5DC40,actors
|
||||
ovl_En_Ot,FE4E90,FE8430,DC06B0,DC2CA0,80B5E800,actors
|
||||
ovl_En_Dragon,FE8430,FEA630,DC2CA0,DC44D0,80B61DB0,actors
|
||||
ovl_Obj_Dora,FEA630,FEB140,DC44D0,DC4D30,80B63FB0,actors
|
||||
ovl_En_Bigpo,FEB140,FEF020,DC4D30,DC79F0,80B64AC0,actors
|
||||
ovl_Obj_Kendo_Kanban,FEF020,FF0580,DC79F0,DC8A00,80B689A0,actors
|
||||
ovl_Obj_Hariko,FF0580,FF0890,DC8A00,DC8C80,80B69F00,actors
|
||||
ovl_En_Sth,FF0890,FF71C0,DC8C80,DCD5F0,80B6A210,actors
|
||||
ovl_Bg_Sinkai_Kabe,FF71C0,FF7740,DCD5F0,DCDAA0,80B70B40,actors
|
||||
ovl_Bg_Haka_Curtain,FF7740,FF7B80,DCDAA0,DCDDA0,80B710C0,actors
|
||||
ovl_Bg_Kin2_Bombwall,FF7B80,FF8360,DCDDA0,DCE400,80B71500,actors
|
||||
ovl_Bg_Kin2_Fence,FF8360,FF8AE0,DCE400,DCE990,80B71CE0,actors
|
||||
ovl_Bg_Kin2_Picture,FF8AE0,FF9670,DCE990,DCF300,80B72460,actors
|
||||
ovl_Bg_Kin2_Shelf,FF9670,FFA400,DCF300,DCFC50,80B72FF0,actors
|
||||
ovl_En_Rail_Skb,FFA400,FFD5C0,DCFC50,DD1D50,80B73D80,actors
|
||||
ovl_En_Jg,FFD5C0,FFFB60,DD1D50,DD36A0,80B76F40,actors
|
||||
ovl_En_Tru_Mt,FFFB60,10012A0,DD36A0,DD4860,80B794E0,actors
|
||||
ovl_Obj_Um,10012A0,1006390,DD4860,DD7FB0,80B7AC20,actors
|
||||
ovl_En_Neo_Reeba,1006390,1008430,DD7FB0,DD95B0,80B7FD10,actors
|
||||
ovl_Bg_Mbar_Chair,1008430,1008560,DD95B0,DD96A0,80B81DB0,actors
|
||||
ovl_Bg_Ikana_Block,1008560,1009230,DD96A0,DDA040,80B81EE0,actors
|
||||
ovl_Bg_Ikana_Mirror,1009230,1009DE0,DDA040,DDA830,80B82BB0,actors
|
||||
ovl_Bg_Ikana_Rotaryroom,1009DE0,100BEB0,DDA830,DDBE50,80B83760,actors
|
||||
ovl_Bg_Dblue_Balance,100BEB0,100D670,DDBE50,DDD040,80B85830,actors
|
||||
ovl_Bg_Dblue_Waterfall,100D670,100EF80,DDD040,DDE260,80B87000,actors
|
||||
ovl_En_Kaizoku,100EF80,1014CC0,DDE260,DE1EC0,80B88910,actors
|
||||
ovl_En_Ge2,1014CC0,1016A20,DE1EC0,DE32A0,80B8E650,actors
|
||||
ovl_En_Ma_Yts,1016A20,1017F10,DE32A0,DE4080,80B903B0,actors
|
||||
ovl_En_Ma_Yto,1017F10,101B6B0,DE4080,DE5D30,80B918A0,actors
|
||||
ovl_Obj_Tokei_Turret,101B6B0,101B910,DE5D30,DE5F40,80B95040,actors
|
||||
ovl_Bg_Dblue_Elevator,101B910,101C500,DE5F40,DE6870,80B952A0,actors
|
||||
ovl_Obj_Warpstone,101C500,101CC80,DE6870,DE6E50,80B95E90,actors
|
||||
ovl_En_Zog,101CC80,101F640,DE6E50,DE8C60,80B96610,actors
|
||||
ovl_Obj_Rotlift,101F640,101FA00,DE8C60,DE8FF0,80B98FE0,actors
|
||||
ovl_Obj_Jg_Gakki,101FA00,101FC30,DE8FF0,DE91F0,80B993A0,actors
|
||||
ovl_Bg_Inibs_Movebg,101FC30,101FDF0,DE91F0,DE9390,80B995D0,actors
|
||||
ovl_En_Zot,101FDF0,10238D0,DE9390,DEB7C0,80B99790,actors
|
||||
ovl_Obj_Tree,10238D0,1023E70,DEB7C0,DEBC60,80B9D270,actors
|
||||
ovl_Obj_Y2lift,1023E70,10241A0,DEBC60,DEBF20,80B9D810,actors
|
||||
ovl_Obj_Y2shutter,10241A0,1024770,DEBF20,DEC400,80B9DB40,actors
|
||||
ovl_Obj_Boat,1024770,1024F00,DEC400,DECA50,80B9E110,actors
|
||||
ovl_Obj_Taru,1024F00,1025C70,DECA50,DED4D0,80B9E8A0,actors
|
||||
ovl_Obj_Hunsui,1025C70,10276F0,DED4D0,DEE810,80B9F610,actors
|
||||
ovl_En_Jc_Mato,10276F0,1027AD0,DEE810,DEEB60,80BA10A0,actors
|
||||
ovl_Mir_Ray3,1027AD0,1028D80,DEEB60,DEFA80,80BA1480,actors
|
||||
ovl_En_Zob,1028D80,102ADB0,DEFA80,DF0E70,80BA2730,actors
|
||||
ovl_Elf_Msg6,102ADB0,102BC30,DF0E70,DF17A0,80BA4760,actors
|
||||
ovl_Obj_Nozoki,102BC30,102D020,DF17A0,DF2640,80BA55E0,actors
|
||||
ovl_En_Toto,102D020,102ED40,DF2640,DF3A70,80BA69E0,actors
|
||||
ovl_En_Railgibud,102ED40,1032140,DF3A70,DF5E10,80BA8700,actors
|
||||
ovl_En_Baba,1032140,1033FF0,DF5E10,DF74C0,80BABB00,actors
|
||||
ovl_En_Suttari,1033FF0,1038890,DF74C0,DFA4A0,80BAD9B0,actors
|
||||
ovl_En_Zod,1038890,103A200,DFA4A0,DFB750,80BB2250,actors
|
||||
ovl_En_Kujiya,103A200,103AFF0,DFB750,DFBFC0,80BB3BC0,actors
|
||||
ovl_En_Geg,103AFF0,103E020,DFBFC0,DFE020,80BB49B0,actors
|
||||
ovl_Obj_Kinoko,103E020,103E3E0,DFE020,DFE3B0,80BB79E0,actors
|
||||
ovl_Obj_Yasi,103E3E0,103E6B0,DFE3B0,DFE650,80BB7DA0,actors
|
||||
ovl_En_Tanron1,103E6B0,1040080,DFE650,DFF6C0,80BB8070,actors
|
||||
ovl_En_Tanron2,1040080,1041D00,DFF6C0,E00B80,80BB9A40,actors
|
||||
ovl_En_Tanron3,1041D00,1043040,E00B80,E01A60,80BBB810,actors
|
||||
ovl_Obj_Chan,1043040,10443F0,E01A60,E02AE0,80BBCB50,actors
|
||||
ovl_En_Zos,10443F0,10461D0,E02AE0,E03DF0,80BBDF10,actors
|
||||
ovl_En_S_Goro,10461D0,1049450,E03DF0,E05CD0,80BBFCF0,actors
|
||||
ovl_En_Nb,1049450,104AFA0,E05CD0,E06FD0,80BC2F70,actors
|
||||
ovl_En_Ja,104AFA0,104D020,E06FD0,E085F0,80BC4AC0,actors
|
||||
ovl_Bg_F40_Block,104D020,104DE50,E085F0,E08F60,80BC6B40,actors
|
||||
ovl_Bg_F40_Switch,104DE50,104E2F0,E08F60,E092C0,80BC7970,actors
|
||||
ovl_En_Po_Composer,104E2F0,104FFB0,E092C0,E0A5F0,80BC7E10,actors
|
||||
ovl_En_Guruguru,104FFB0,1050E90,E0A5F0,E0B190,80BC9AD0,actors
|
||||
ovl_Oceff_Wipe5,1050E90,1052620,E0B190,E0C8B0,80BCA9B0,actors
|
||||
ovl_En_Stone_heishi,1052620,1053910,E0C8B0,E0D710,80BCC150,actors
|
||||
ovl_Oceff_Wipe6,1053910,1053F60,E0D710,E0DC20,80BCD440,actors
|
||||
ovl_En_Scopenuts,1053F60,1056360,E0DC20,E0F510,80BCDA90,actors
|
||||
ovl_En_Scopecrow,1056360,1057010,E0F510,E0FEF0,80BCFE90,actors
|
||||
ovl_Oceff_Wipe7,1057010,1057E70,E0FEF0,E10640,80BD0B40,actors
|
||||
ovl_Eff_Kamejima_Wave,1057E70,1058510,E10640,E10B60,80BD19B0,actors
|
||||
ovl_En_Hg,1058510,10595E0,E10B60,E11700,80BD2060,actors
|
||||
ovl_En_Hgo,10595E0,105A510,E11700,E12200,80BD3130,actors
|
||||
ovl_En_Zov,105A510,105BD60,E12200,E13300,80BD4060,actors
|
||||
ovl_En_Ah,105BD60,105D3C0,E13300,E14230,80BD58B0,actors
|
||||
ovl_Obj_Hgdoor,105D3C0,105DA50,E14230,E14720,80BD6F10,actors
|
||||
ovl_Bg_Ikana_Bombwall,105DA50,105E6D0,E14720,E14FE0,80BD75A0,actors
|
||||
ovl_Bg_Ikana_Ray,105E6D0,105E9A0,E14FE0,E15210,80BD8220,actors
|
||||
ovl_Bg_Ikana_Shutter,105E9A0,105F110,E15210,E15670,80BD84F0,actors
|
||||
ovl_Bg_Haka_Bombwall,105F110,105F870,E15670,E15C50,80BD8C60,actors
|
||||
ovl_Bg_Haka_Tomb,105F870,105FC00,E15C50,E15F10,80BD93C0,actors
|
||||
ovl_En_Sc_Ruppe,105FC00,1060200,E15F10,E16400,80BD9750,actors
|
||||
ovl_Bg_Iknv_Doukutu,1060200,1060DA0,E16400,E16C70,80BD9D50,actors
|
||||
ovl_Bg_Iknv_Obj,1060DA0,10615A0,E16C70,E17240,80BDA8F0,actors
|
||||
ovl_En_Pamera,10615A0,1063D20,E17240,E18A10,80BDB0F0,actors
|
||||
ovl_Obj_HsStump,1063D20,1064340,E18A10,E18F60,80BDD870,actors
|
||||
ovl_En_Hidden_Nuts,1064340,10655E0,E18F60,E19C80,80BDDE90,actors
|
||||
ovl_En_Zow,10655E0,1067350,E19C80,E1B0A0,80BDF130,actors
|
||||
ovl_En_Talk,1067350,1067510,E1B0A0,E1B200,80BE0EA0,actors
|
||||
ovl_En_Al,1067510,1069850,E1B200,E1C940,80BE1060,actors
|
||||
ovl_En_Tab,1069850,106AFF0,E1C940,E1DA10,80BE33A0,actors
|
||||
ovl_En_Nimotsu,106AFF0,106B3A0,E1DA10,E1DD60,80BE4B40,actors
|
||||
ovl_En_Hit_Tag,106B3A0,106B5D0,E1DD60,E1DF40,80BE4EF0,actors
|
||||
ovl_En_Ruppecrow,106B5D0,106CEF0,E1DF40,E1F060,80BE5120,actors
|
||||
ovl_En_Tanron4,106CEF0,106DCA0,E1F060,E1F9D0,80BE6A40,actors
|
||||
ovl_En_Tanron5,106DCA0,106F3D0,E1F9D0,E20A80,80BE77F0,actors
|
||||
ovl_En_Tanron6,106F3D0,106F560,E20A80,E20BE0,80BE8F20,actors
|
||||
ovl_En_Daiku2,106F560,1070F10,E20BE0,E21EF0,80BE90B0,actors
|
||||
ovl_En_Muto,1070F10,1071930,E21EF0,E22740,80BEAA60,actors
|
||||
ovl_En_Baisen,1071930,1072360,E22740,E22F80,80BEB480,actors
|
||||
ovl_En_Heishi,1072360,1072990,E22F80,E234E0,80BEBEB0,actors
|
||||
ovl_En_Demo_heishi,1072990,1072FD0,E234E0,E23A50,80BEC4E0,actors
|
||||
ovl_En_Dt,1072FD0,10749D0,E23A50,E24D80,80BECB20,actors
|
||||
ovl_En_Cha,10749D0,1074DF0,E24D80,E25100,80BEE520,actors
|
||||
ovl_Obj_Dinner,1074DF0,1074F70,E25100,E25250,80BEE940,actors
|
||||
ovl_Eff_Lastday,1074F70,10756F0,E25250,E256F0,80BEEAC0,actors
|
||||
ovl_Bg_Ikana_Dharma,10756F0,1076080,E256F0,E25F40,80BEF240,actors
|
||||
ovl_En_Akindonuts,1076080,107A0A0,E25F40,E28690,80BEFBE0,actors
|
||||
ovl_Eff_Stk,107A0A0,107A460,E28690,E289F0,80BF3C00,actors
|
||||
ovl_En_Ig,107A460,107CC30,E289F0,E2A520,80BF3FC0,actors
|
||||
ovl_En_Rg,107CC30,107EF20,E2A520,E2BFB0,80BF6790,actors
|
||||
ovl_En_Osk,107EF20,10807E0,E2BFB0,E2CE70,80BF8A90,actors
|
||||
ovl_En_Sth2,10807E0,1083400,E2CE70,E2E9C0,80BFA350,actors
|
||||
ovl_En_Yb,1083400,1084780,E2E9C0,E2F7D0,80BFCF70,actors
|
||||
ovl_En_Rz,1084780,10862A0,E2F7D0,E30A20,80BFE2F0,actors
|
||||
ovl_En_Scopecoin,10862A0,10865E0,E30A20,E30CD0,80BFFE10,actors
|
||||
ovl_En_Bjt,10865E0,1087470,E30CD0,E31740,80C00150,actors
|
||||
ovl_En_Bomjima,1087470,108A1A0,E31740,E33610,80C00FE0,actors
|
||||
ovl_En_Bomjimb,108A1A0,108C850,E33610,E35150,80C03D10,actors
|
||||
ovl_En_Bombers,108C850,108DC50,E35150,E36080,80C063C0,actors
|
||||
ovl_En_Bombers2,108DC50,108ED90,E36080,E36DC0,80C077C0,actors
|
||||
ovl_En_Bombal,108ED90,108F830,E36DC0,E37690,80C08900,actors
|
||||
ovl_Obj_Moon_Stone,108F830,108FDC0,E37690,E37B20,80C093A0,actors
|
||||
ovl_Obj_Mu_Pict,108FDC0,1090430,E37B20,E37FB0,80C09930,actors
|
||||
ovl_Bg_Ikninside,1090430,1090A60,E37FB0,E38500,80C09FA0,actors
|
||||
ovl_Eff_Zoraband,1090A60,1090E40,E38500,E38860,80C0A5D0,actors
|
||||
ovl_Obj_Kepn_Koya,1090E40,1090FA0,E38860,E38990,80C0A9B0,actors
|
||||
ovl_Obj_Usiyane,1090FA0,1091A90,E38990,E39320,80C0AB10,actors
|
||||
ovl_En_Nnh,1091A90,1091DB0,E39320,E395A0,80C0B600,actors
|
||||
ovl_Obj_Kzsaku,1091DB0,1092170,E395A0,E398A0,80C0B920,actors
|
||||
ovl_Obj_Milk_Bin,1092170,1092400,E398A0,E39AD0,80C0BCE0,actors
|
||||
ovl_En_Kitan,1092400,1093200,E39AD0,E3A510,80C0BF70,actors
|
||||
ovl_Bg_Astr_Bombwall,1093200,1093A70,E3A510,E3ABF0,80C0CD70,actors
|
||||
ovl_Bg_Iknin_Susceil,1093A70,10945C0,E3ABF0,E3B3C0,80C0D5E0,actors
|
||||
ovl_En_Bsb,10945C0,10992E0,E3B3C0,E3E930,80C0E130,actors
|
||||
ovl_En_Recepgirl,10992E0,1099A80,E3E930,E3EF10,80C12E50,actors
|
||||
ovl_En_Thiefbird,1099A80,109CC30,E3EF10,E41280,80C135F0,actors
|
||||
ovl_En_Jgame_Tsn,109CC30,109E5F0,E41280,E42420,80C167B0,actors
|
||||
ovl_Obj_Jgame_Light,109E5F0,109F4E0,E42420,E42D50,80C18170,actors
|
||||
ovl_Obj_Yado,109F4E0,109F770,E42D50,E42F70,80C19060,actors
|
||||
ovl_Demo_Syoten,109F770,10A0D00,E42F70,E43EA0,80C19300,actors
|
||||
ovl_Demo_Moonend,10A0D00,10A1410,E43EA0,E443E0,80C1A890,actors
|
||||
ovl_Bg_Lbfshot,10A1410,10A1530,E443E0,E444D0,80C1AFA0,actors
|
||||
ovl_Bg_Last_Bwall,10A1530,10A1E80,E444D0,E44C40,80C1B0C0,actors
|
||||
ovl_En_And,10A1E80,10A2590,E44C40,E451F0,80C1BA10,actors
|
||||
ovl_En_Invadepoh_Demo,10A2590,10A4030,E451F0,E46200,80C1C120,actors
|
||||
ovl_Obj_Danpeilift,10A4030,10A48B0,E46200,E468F0,80C1DC40,actors
|
||||
ovl_En_Fall2,10A48B0,10A5000,E468F0,E46EB0,80C1E4C0,actors
|
||||
ovl_Dm_Al,10A5000,10A5680,E46EB0,E473E0,80C1EC10,actors
|
||||
ovl_Dm_An,10A5680,10A6680,E473E0,E47FB0,80C1F290,actors
|
||||
ovl_Dm_Ah,10A6680,10A7140,E47FB0,E487D0,80C20290,actors
|
||||
ovl_Dm_Nb,10A7140,10A7500,E487D0,E48B10,80C20D50,actors
|
||||
ovl_En_Drs,10A7500,10A7900,E48B10,E48E70,80C21110,actors
|
||||
ovl_En_Ending_Hero,10A7900,10A7C50,E48E70,E49180,80C21510,actors
|
||||
ovl_Dm_Bal,10A7C50,10A8640,E49180,E498E0,80C21860,actors
|
||||
ovl_En_Paper,10A8640,10A8F60,E498E0,E4A060,80C22250,actors
|
||||
ovl_En_Hint_Skb,10A8F60,10AB5A0,E4A060,E4B980,80C22B70,actors
|
||||
ovl_Dm_Tag,10AB5A0,10ABF90,E4B980,E4C0A0,80C251B0,actors
|
||||
ovl_En_Bh,10ABF90,10AC480,E4C0A0,E4C4C0,80C25BA0,actors
|
||||
ovl_En_Ending_Hero2,10AC480,10AC6B0,E4C4C0,E4C6C0,80C26090,actors
|
||||
ovl_En_Ending_Hero3,10AC6B0,10AC8E0,E4C6C0,E4C8C0,80C262C0,actors
|
||||
ovl_En_Ending_Hero4,10AC8E0,10ACB10,E4C8C0,E4CAC0,80C264F0,actors
|
||||
ovl_En_Ending_Hero5,10ACB10,10ACEE0,E4CAC0,E4CE10,80C26720,actors
|
||||
ovl_En_Ending_Hero6,10ACEE0,10AD5B0,E4CE10,E4D3E0,80C26AF0,actors
|
||||
ovl_Dm_Gm,10AD5B0,10AE5B0,E4D3E0,E4DFB0,80C271C0,actors
|
||||
ovl_Obj_Swprize,10AE5B0,10AEAF0,E4DFB0,E4E3B0,80C281C0,actors
|
||||
ovl_En_Invisible_Ruppe,10AEAF0,10AEE10,E4E3B0,E4E5F0,80C28700,actors
|
||||
ovl_Obj_Ending,10AEE10,10AEF90,E4E5F0,E4E720,80C28A20,actors
|
||||
ovl_En_Rsn,10AEF90,10AF2F0,E4E720,E4E9D0,80C28BA0,actors
|
||||
|
|
|
@ -0,0 +1,307 @@
|
|||
offset,vram,.text
|
||||
0,80080060,src/boot/boot_main
|
||||
F0,80080150,src/boot/idle
|
||||
580,800805E0,src/boot/viconfig
|
||||
730,80080790,src/boot/z_std_dma
|
||||
DD0,80080E30,src/boot/yaz0
|
||||
11F0,80081250,src/boot/irqmgr
|
||||
17B0,80081810,src/boot/CIC6105
|
||||
1A30,80081A90,src/boot/syncprintf
|
||||
1AA0,80081B00,src/boot/fault
|
||||
3FD0,80084030,src/boot/fault_drawer
|
||||
4A60,80084AC0,src/boot/libu64/rcp_utils
|
||||
4D90,80084DF0,src/boot/libu64/loadfragment
|
||||
5440,800854A0,src/boot/libu64/loadfragment2
|
||||
58F0,80085950,src/boot/libu64/pad
|
||||
5AE0,80085B40,src/boot/libu64/stackcheck
|
||||
5DE0,80085E40,src/boot/libu64/gfxprint
|
||||
6990,800869F0,src/boot/libu64/mtxuty-cvt
|
||||
6B00,80086B60,src/boot/libu64/debug
|
||||
6C20,80086C80,src/boot/libu64/system_heap
|
||||
6F60,80086FC0,src/boot/libu64/padsetup
|
||||
70A0,80087100,src/boot/libc64/math64
|
||||
75B0,80087610,src/boot/libc64/fp
|
||||
7710,80087770,src/boot/libc64/malloc
|
||||
78E0,80087940,src/boot/libc64/qrand
|
||||
7AA0,80087B00,src/boot/libc64/__osMalloc
|
||||
86D0,80088730,src/boot/libc64/sprintf
|
||||
87A0,80088800,src/boot/libc64/aprintf
|
||||
8800,80088860,src/boot/libc64/sleep
|
||||
89A0,80088A00,src/libultra/os/setcause
|
||||
89B0,80088A10,src/libultra/os/sendmesg
|
||||
8B00,80088B60,src/libultra/io/pfsfreeblocks
|
||||
8CA0,80088D00,src/libultra/io/viextendvstart
|
||||
8CB0,80088D10,src/libultra/os/stopthread
|
||||
8D70,80088DD0,src/libultra/os/recvmesg
|
||||
8EB0,80088F10,src/libultra/os/setintmask
|
||||
8F50,80088FB0,src/libultra/os/getintmask
|
||||
8FB0,80089010,src/libultra/voice/voicesetword
|
||||
9140,800891A0,src/libultra/mgu/scale
|
||||
91F0,80089250,src/libultra/gu/sinf
|
||||
93B0,80089410,src/libultra/gu/sins
|
||||
9420,80089480,src/libultra/io/sptask
|
||||
96E0,80089740,src/libultra/libc/ll
|
||||
99A0,80089A00,src/libultra/os/exceptasm
|
||||
A2D0,8008A330,src/libultra/os/thread
|
||||
A310,8008A370,src/libultra/os/destroythread
|
||||
A420,8008A480,src/libultra/voice/voicecheckresult
|
||||
A4D0,8008A530,src/libultra/libc/bzero
|
||||
A570,8008A5D0,src/libultra/io/motor
|
||||
A940,8008A9A0,src/libultra/io/siacs
|
||||
AA00,8008AA60,src/libultra/io/controller
|
||||
ACE0,8008AD40,src/libultra/os/createthread
|
||||
AE30,8008AE90,src/libultra/io/contreaddata
|
||||
B010,8008B070,src/libultra/voice/voicegetreaddata
|
||||
B3E0,8008B440,src/libultra/os/virtualtophysical
|
||||
B460,8008B4C0,src/libultra/os/getsr
|
||||
B470,8008B4D0,src/libultra/os/setsr
|
||||
B480,8008B4E0,src/libultra/os/writebackdcache
|
||||
B500,8008B560,src/libultra/os/initialize
|
||||
B850,8008B8B0,src/libultra/os/parameters
|
||||
B8B0,8008B910,src/libultra/io/vigetnextframebuf
|
||||
B8F0,8008B950,src/libultra/gu/perspective
|
||||
BB80,8008BBE0,src/libultra/io/sprawdma
|
||||
BC10,8008BC70,src/libultra/io/sirawdma
|
||||
BCC0,8008BD20,src/libultra/io/epilinkhandle
|
||||
BD10,8008BD70,src/libultra/io/viblack
|
||||
BD80,8008BDE0,src/libultra/io/sirawread
|
||||
BDD0,8008BE30,src/libultra/os/getthreadid
|
||||
BDF0,8008BE50,src/libultra/io/sptaskyield
|
||||
BE10,8008BE70,src/libultra/io/pfsreadwritefile
|
||||
C260,8008C2C0,src/libultra/io/pfsgetstatus
|
||||
C4A0,8008C500,src/libultra/mgu/mtxidentf
|
||||
C4F0,8008C550,src/libultra/io/visetmode
|
||||
C550,8008C5B0,src/libultra/os/getconfig
|
||||
C560,8008C5C0,src/libultra/os/setconfig
|
||||
C570,8008C5D0,src/libultra/gu/lookat
|
||||
C890,8008C8F0,src/libultra/io/pfsallocatefile
|
||||
CD10,8008CD70,src/libultra/os/stoptimer
|
||||
CE00,8008CE60,src/libultra/os/probetlb
|
||||
CEC0,8008CF20,src/libultra/io/pimgr
|
||||
D030,8008D090,src/libultra/io/piacs
|
||||
D100,8008D160,src/libultra/io/devmgr
|
||||
D510,8008D570,src/libultra/io/pirawdma
|
||||
D5E0,8008D640,src/libultra/io/contpfs
|
||||
E160,8008E1C0,src/libultra/os/getcount
|
||||
E170,8008E1D0,padding/E170
|
||||
E180,8008E1E0,src/libultra/mgu/mtxl2f
|
||||
E1F0,8008E250,src/libultra/os/getmemsize
|
||||
E310,8008E370,src/libultra/io/pfssearchfile
|
||||
E4E0,8008E540,src/libultra/os/seteventmesg
|
||||
E5A0,8008E600,src/libultra/gu/sqrtf
|
||||
E5B0,8008E610,src/libultra/os/afterprenmi
|
||||
E5D0,8008E630,src/libultra/io/contquery
|
||||
E670,8008E6D0,src/libultra/gu/lookathil
|
||||
EEF0,8008EF50,src/libultra/libc/xprintf
|
||||
FBD0,8008FC30,src/libultra/voice/voicecleardictionary
|
||||
FC80,8008FCE0,src/libultra/os/unmaptlball
|
||||
FCD0,8008FD30,src/libultra/io/epidma
|
||||
FD70,8008FDD0,src/libultra/voice/voicecontread2
|
||||
FFA0,80090000,src/libultra/voice/voicecrc
|
||||
10040,800900A0,src/libultra/libc/string
|
||||
100E0,80090140,src/libultra/os/createmesgqueue
|
||||
10110,80090170,src/libultra/os/invalicache
|
||||
10190,800901F0,src/libultra/os/invaldcache
|
||||
10240,800902A0,src/libultra/os/timerintr
|
||||
10670,800906D0,src/libultra/voice/voicecontread36
|
||||
108A0,80090900,src/libultra/io/sp
|
||||
108D0,80090930,src/libultra/io/si
|
||||
10900,80090960,src/libultra/mgu/mtxident
|
||||
10950,800909B0,src/libultra/os/jammesg
|
||||
10AA0,80090B00,src/libultra/os/setthreadpri
|
||||
10B80,80090BE0,src/libultra/os/getthreadpri
|
||||
10BA0,80090C00,src/libultra/io/epirawread
|
||||
10D00,80090D60,src/libultra/io/viswapbuf
|
||||
10D50,80090DB0,src/libultra/gu/position
|
||||
10F60,80090FC0,src/libultra/io/epirawdma
|
||||
11140,800911A0,src/libultra/io/sptaskyielded
|
||||
111A0,80091200,src/libultra/libc/bcmp
|
||||
112C0,80091320,src/libultra/os/gettime
|
||||
11350,800913B0,src/libultra/gu/rotate
|
||||
11520,80091580,src/libultra/os/setglobalintmask
|
||||
11570,800915D0,src/libultra/voice/voiceinit
|
||||
116B0,80091710,src/libultra/io/contchannelreset
|
||||
117A0,80091800,src/libultra/voice/voicesetadconverter
|
||||
11990,800919F0,src/libultra/io/aisetfreq
|
||||
11AE0,80091B40,src/libultra/io/contramread
|
||||
11D10,80091D70,src/libultra/voice/voicecontwrite20
|
||||
11F40,80091FA0,src/libultra/io/crc
|
||||
120B0,80092110,src/libultra/os/getactivequeue
|
||||
120C0,80092120,src/libultra/mgu/normalize
|
||||
12120,80092180,src/libultra/os/setcompare
|
||||
12130,80092190,src/libultra/os/getcompare
|
||||
12140,800921A0,src/libultra/io/dpgetstat
|
||||
12150,800921B0,src/libultra/io/dpsetstat
|
||||
12160,800921C0,src/libultra/libc/bcopy
|
||||
12470,800924D0,src/libultra/os/resetglobalintmask
|
||||
124D0,80092530,src/libultra/io/pfsdeletefile
|
||||
12740,800927A0,src/libultra/gu/ortho
|
||||
12900,80092960,src/libultra/os/interrupt
|
||||
12990,800929F0,src/libultra/io/vi
|
||||
12AB0,80092B10,src/libultra/io/viswapcontext
|
||||
12DB0,80092E10,src/libultra/io/pigetcmdq
|
||||
12DE0,80092E40,src/libultra/gu/cosf
|
||||
12F50,80092FB0,src/libultra/io/epiread
|
||||
12FA0,80093000,src/libultra/io/visetspecial
|
||||
13100,80093160,src/libultra/gu/coss
|
||||
13130,80093190,src/libultra/os/settime
|
||||
13160,800931C0,src/libultra/voice/voicestopreaddata
|
||||
13280,800932E0,src/libultra/io/visetevent
|
||||
132E0,80093340,src/libultra/io/pfsisplug
|
||||
135D0,80093630,src/libultra/voice/voicegetstatus
|
||||
137C0,80093820,src/libultra/io/cartrominit
|
||||
13920,80093980,src/libultra/gu/us2dex
|
||||
13AA0,80093B00,src/libultra/io/pfsselectbank
|
||||
13B20,80093B80,src/libultra/io/contsetch
|
||||
13B80,80093BE0,src/libultra/os/setfpccsr
|
||||
13B90,80093BF0,src/libultra/os/getfpccsr
|
||||
13BA0,80093C00,src/libultra/io/pfsfilestate
|
||||
13D80,80093DE0,src/libultra/io/pfsinitpak
|
||||
14090,800940F0,src/libultra/io/pfschecker
|
||||
14A40,80094AA0,src/libultra/io/aigetlen
|
||||
14A50,80094AB0,src/libultra/io/epiwrite
|
||||
14AA0,80094B00,src/libultra/os/maptlbrdb
|
||||
14B00,80094B60,src/libultra/os/yieldthread
|
||||
14B60,80094BC0,src/libultra/mgu/translate
|
||||
14C30,80094C90,src/libultra/os/getcause
|
||||
14C40,80094CA0,src/libultra/io/contramwrite
|
||||
14E90,80094EF0,src/libultra/io/epirawwrite
|
||||
14FF0,80095050,src/libultra/os/settimer
|
||||
15180,800951E0,src/libultra/libc/xldtob
|
||||
15C90,80095CF0,src/libultra/libc/ldiv
|
||||
15E20,80095E80,src/libultra/libc/xlitob
|
||||
160C0,80096120,src/libultra/io/sirawwrite
|
||||
16110,80096170,src/libultra/io/spgetstat
|
||||
16120,80096180,src/libultra/io/spsetstat
|
||||
16140,800961A0,src/libultra/io/vimgr
|
||||
16450,800964B0,src/libultra/io/vigetcurrcontext
|
||||
16460,800964C0,src/libultra/os/writebackdcacheall
|
||||
16490,800964F0,src/libultra/os/getcurrfaultthread
|
||||
164A0,80096500,src/libultra/voice/voicemaskdictionary
|
||||
165E0,80096640,src/libultra/mgu/mtxf2l
|
||||
16650,800966B0,src/libultra/os/startthread
|
||||
167A0,80096800,src/libultra/io/visetyscale
|
||||
167F0,80096850,src/libultra/io/visetxscale
|
||||
16900,80096960,src/libultra/libc/llcvt
|
||||
16B10,80096B70,src/libultra/voice/voicecheckword
|
||||
17200,80097260,src/libultra/voice/voicecontrolgain
|
||||
172B0,80097310,src/libultra/voice/voicestartreaddata
|
||||
17370,800973D0,src/libultra/io/vigetcurrframebuf
|
||||
173B0,80097410,src/libultra/io/spsetpc
|
||||
173E0,80097440,src/libultra/voice/voicecontwrite4
|
||||
17610,80097670,src/libultra/os/gethwinterrupt
|
||||
17640,800976A0,src/libultra/os/sethwinterrupt
|
||||
176B0,80097710,src/libultra/os/getwatchlo
|
||||
176C0,80097720,src/libultra/os/setwatchlo
|
||||
176D0,80097730,src/boot/libm/fmodf
|
||||
17720,80097780,src/boot/libc/memset
|
||||
17750,800977B0,src/boot/libc/strcmp
|
||||
17790,800977F0,src/boot/libc/strcpy
|
||||
177D0,80097830,src/boot/libc/memmove
|
||||
|
||||
offset,vram,.dummy #.text
|
||||
17860R,800978C0,rsp/rspboot
|
||||
179C0R,80097A20,rsp/cic6105
|
||||
|
||||
offset,vram,.data
|
||||
179E0,80097A40,src/boot/idle
|
||||
17A00,80097A60,src/boot/carthandle
|
||||
17A10,80097A70,src/boot/z_std_dma
|
||||
17A20,80097A80,src/boot/irqmgr
|
||||
17A40,80097AA0,src/boot/CIC6105
|
||||
17A80,80097AE0,src/boot/fault
|
||||
17AE0,80097B40,src/boot/fault_drawer
|
||||
17B20,80097B80,src/boot/libu64/loadfragment
|
||||
17B30,80097B90,src/boot/libu64/loadfragment2
|
||||
17B40,80097BA0,src/boot/libu64/stackcheck
|
||||
17B50,80097BB0,src/boot/libu64/gfxprint
|
||||
18400,80098460,src/boot/libu64/system_heap
|
||||
18410,80098470,src/boot/libc64/fp
|
||||
18430,80098490,src/boot/libc64/qrand
|
||||
18440,800984A0,src/boot/libc64/__osMalloc
|
||||
18450,800984B0,src/libultra/vimodes/vimodentschpf1
|
||||
184A0,80098500,src/libultra/vimodes/vimodepallan1
|
||||
184F0,80098550,src/libultra/gu/sins
|
||||
18CF0,80098D50,src/libultra/os/exceptasm
|
||||
18D20,80098D80,src/libultra/os/thread
|
||||
18D40,80098DA0,src/libultra/io/siacs
|
||||
18D50,80098DB0,src/libultra/io/controller
|
||||
18D60,80098DC0,src/libultra/os/initialize
|
||||
18D80,80098DE0,src/libultra/io/pimgr
|
||||
18DB0,80098E10,src/libultra/io/piacs
|
||||
18DC0,80098E20,src/libultra/vimodes/vimodentschpn1
|
||||
18E10,80098E70,src/libultra/io/contpfs
|
||||
18E20,80098E80,src/libultra/os/seteventmesg
|
||||
18E30,80098E90,src/libultra/libc/xprintf
|
||||
18E80,80098EE0,src/libultra/os/timerintr
|
||||
18E90,80098EF0,src/libultra/gu/position
|
||||
18EA0,80098F00,src/libultra/gu/rotate
|
||||
18EB0,80098F10,src/libultra/voice/voiceinit
|
||||
18EC0,80098F20,src/libultra/io/contramread
|
||||
18ED0,80098F30,src/libultra/vimodes/vimodentsclan1
|
||||
18F20,80098F80,src/libultra/vimodes/vimodempallan1
|
||||
18F70,80098FD0,src/libultra/io/vi
|
||||
18FE0,80099040,src/libultra/io/cartrominit
|
||||
18FF0,80099050,src/libultra/vimodes/vimodefpallan1
|
||||
19040,800990A0,src/libultra/libc/xlitob
|
||||
19070,800990D0,src/libultra/io/vimgr
|
||||
19090,800990F0,src/libultra/voice/voicecontrolgain
|
||||
|
||||
offset,vram,.rodata
|
||||
190A0,80099100,src/boot/boot_main
|
||||
190B0,80099110,src/boot/idle
|
||||
190F0,80099150,src/boot/z_std_dma
|
||||
19190,800991F0,src/boot/yaz0
|
||||
19220,80099280,src/boot/irqmgr
|
||||
194F0,80099550,src/boot/CIC6105
|
||||
19570,800995D0,src/boot/fault
|
||||
19F10,80099F70,src/boot/fault_drawer
|
||||
1A340,8009A3A0,src/boot/libu64/rcp_utils
|
||||
1A490,8009A4F0,src/boot/libu64/loadfragment
|
||||
1A7E0,8009A840,src/boot/libu64/loadfragment2
|
||||
1A980,8009A9E0,src/boot/libu64/stackcheck
|
||||
1AA20,8009AA80,src/boot/libu64/gfxprint
|
||||
1AA60,8009AAC0,src/boot/libu64/debug
|
||||
1AAD0,8009AB30,src/boot/libc64/math64
|
||||
1AB20,8009AB80,src/boot/libc64/__osMalloc
|
||||
1AC90,8009ACF0,src/libultra/os/setintmask
|
||||
1AD10,8009AD70,src/libultra/gu/sinf
|
||||
1AD60,8009ADC0,src/libultra/os/exceptasm
|
||||
1ADB0,8009AE10,src/libultra/gu/perspective
|
||||
1ADC0,8009AE20,src/libultra/io/devmgr
|
||||
1ADE0,8009AE40,src/libultra/gu/lookathil
|
||||
1ADF0,8009AE50,src/libultra/libc/xprintf
|
||||
1AEF0,8009AF50,src/libultra/gu/cosf
|
||||
1AF40,8009AFA0,src/libultra/gu/libm_vals
|
||||
1AF50,8009AFB0,src/libultra/libc/xldtob
|
||||
1AFB0,8009B010,src/libultra/libc/llcvt
|
||||
1AFC0,8009B020,src/boot/build
|
||||
|
||||
offset,vram,.bss
|
||||
1AFF0,8009B050,src/boot/boot_main
|
||||
1B9E0,8009BA40,src/boot/idle
|
||||
1CD90,8009CDF0,src/boot/z_std_dma
|
||||
1D500,8009D560,src/boot/yaz0
|
||||
1D910,8009D970,src/boot/CIC6105
|
||||
1D930,8009D990,src/boot/fault
|
||||
1E7B0,8009E810,src/boot/fault_drawer
|
||||
1E7F0,8009E850,src/boot/libc64/math64
|
||||
1E800,8009E860,src/boot/libc64/malloc
|
||||
1E830,8009E890,src/boot/libc64/qrand
|
||||
1E840,8009E8A0,src/boot/libc64/__osMalloc
|
||||
1E850,8009E8B0,src/libultra/io/sptask
|
||||
1E890,8009E8F0,src/libultra/io/motor
|
||||
1E990,8009E9F0,src/libultra/io/siacs
|
||||
1E9B0,8009EA10,src/libultra/io/controller
|
||||
1EA40,8009EAA0,src/libultra/voice/voicegetreaddata
|
||||
1EA50,8009EAB0,src/libultra/os/initialize
|
||||
1EA60,8009EAC0,src/libultra/debug/kdebugserver
|
||||
1EC10,8009EC70,src/libultra/io/pimgr
|
||||
1FED0,8009FF30,src/libultra/io/piacs
|
||||
1FEF0,8009FF50,src/libultra/io/contpfs
|
||||
1FFF0,800A0050,src/libultra/os/seteventmesg
|
||||
20070,800A00D0,src/libultra/os/timerintr
|
||||
200B0,800A0110,src/libultra/io/pfsisplug
|
||||
200F0,800A0150,src/libultra/io/cartrominit
|
||||
20170,800A01D0,src/libultra/io/vimgr
|
||||
21390,800A13F0,.end
|
||||
|
|
|
@ -0,0 +1,415 @@
|
|||
offset,vram,.text
|
||||
0,800A75E0,src/code/z_en_a_keep
|
||||
240,800A7820,src/code/z_en_item00
|
||||
2730,800A9D10,src/code/z_eff_blure
|
||||
5B10,800AD0F0,src/code/z_eff_shield_particle
|
||||
7130,800AE710,src/code/z_eff_spark
|
||||
87E0,800AFDC0,src/code/z_eff_ss_dead
|
||||
8E70,800B0450,src/code/z_eff_tire_mark
|
||||
9C50,800B1230,src/code/z_effect
|
||||
A590,800B1B70,src/code/z_effect_soft_sprite
|
||||
B050,800B2630,src/code/z_effect_soft_sprite_old_init
|
||||
D810,800B4DF0,src/code/flg_set
|
||||
DDC0,800B53A0,src/code/z_DLF
|
||||
E010,800B55F0,src/code/z_actor
|
||||
19EE0,800C14C0,src/code/z_actor_dlftbls
|
||||
1A0C0,800C16A0,src/code/z_bgcheck
|
||||
25010,800CC5F0,src/code/z_bg_collect
|
||||
25350,800CC930,src/code/z_bg_item
|
||||
25750,800CCD30,src/code/z_camera
|
||||
3A8E0,800E1EC0,src/code/z_collision_btltbls
|
||||
3A950,800E1F30,src/code/z_collision_check
|
||||
433E0,800EA9C0,src/code/code_800E8EA0
|
||||
438A0,800EAE80,src/code/z_common_data
|
||||
43920,800EAF00,src/code/z_debug
|
||||
439B0,800EAF90,src/code/z_debug_display
|
||||
441D0,800EB7B0,src/code/z_debug_mode
|
||||
445A0,800EBB80,src/code/z_demo
|
||||
48850,800EFE30,src/code/z_draw
|
||||
4A390,800F1970,src/code/z_eff_footmark
|
||||
4A8C0,800F1EA0,src/code/z_sound_source
|
||||
4AAF0,800F20D0,src/code/z_elf_message
|
||||
4ACF0,800F22D0,src/code/z_en_hy_code
|
||||
4B770,800F2D50,src/code/z_face_reaction
|
||||
4B7F0,800F2DD0,src/code/z_env_flags
|
||||
4B980,800F2F60,src/code/z_eventmgr
|
||||
4C910,800F3EF0,src/code/z_fcurve_data
|
||||
4CB50,800F4130,src/code/z_fcurve_data_skelanime
|
||||
4D260,800F4840,src/code/z_fireobj
|
||||
4DE80,800F5460,src/code/z_horse
|
||||
4E7E0,800F5DC0,src/code/z_jpeg
|
||||
4EF50,800F6530,src/code/z_kaleido_setup
|
||||
4F480,800F6A60,src/code/z_kanfont
|
||||
4F720,800F6D00,src/code/z_kankyo
|
||||
59320,80100900,src/code/z_lib
|
||||
5AC50,80102230,src/code/z_lifemeter
|
||||
5C030,80103610,src/code/z_lights
|
||||
5D2F0,801048D0,src/code/z_malloc
|
||||
5D4D0,80104AB0,src/code/z_map_disp
|
||||
63B30,8010B110,src/code/z_map_data
|
||||
64690,8010BC70,src/code/z_map_exp
|
||||
64DF0,8010C3D0,src/code/z_msgevent
|
||||
666F0,8010DCD0,src/code/z_nmi_buff
|
||||
667E0,8010DDC0,src/code/z_nulltask
|
||||
66860,8010DE40,src/code/z_olib
|
||||
671B0,8010E790,src/code/z_parameter
|
||||
7C9E0,80123FC0,src/code/z_path
|
||||
7CB60,80124140,src/code/z_pause
|
||||
7CBF0,801241D0,src/code/z_player_lib
|
||||
84400,8012B9E0,src/code/z_prenmi
|
||||
84590,8012BB70,src/code/z_quake
|
||||
86160,8012D740,src/code/z_rcp
|
||||
87A10,8012EFF0,src/code/z_room
|
||||
89180,80130760,src/code/z_inventory
|
||||
897D0,80130DB0,src/code/z_scene
|
||||
8ACB0,80132290,src/code/z_scene_proc
|
||||
8C7B0,80133D90,src/code/z_scene_table
|
||||
8C8C0,80133EA0,src/code/z_schedule
|
||||
8D5D0,80134BB0,src/code/z_skelanime
|
||||
91E60,80139440,src/code/z_skin
|
||||
92900,80139EE0,src/code/z_skin_awb
|
||||
93090,8013A670,src/code/z_skin_matrix
|
||||
94730,8013BD10,src/code/z_snap
|
||||
94CB0,8013C290,src/code/z_sub_s
|
||||
99100,801406E0,src/code/z_sram_JPN
|
||||
9BB00,801430E0,src/code/z_rumble
|
||||
9BD50,80143330,src/code/z_view
|
||||
9D150,80144730,src/code/z_vimode
|
||||
9DBD0,801451B0,src/code/z_viscvg
|
||||
9DD70,80145350,src/code/z_visfbuf
|
||||
9E7A0,80145D80,src/code/z_vismono
|
||||
9EFB0,80146590,src/code/z_viszbuf
|
||||
9F330,80146910,src/code/z_vr_box
|
||||
A0490,80147A70,src/code/z_vr_box_draw
|
||||
A0900,80147EE0,src/code/z_message
|
||||
B2C30,8015A210,src/code/z_message_staff
|
||||
B5050,8015C630,src/code/z_player_call
|
||||
B51C0,8015C7A0,src/code/z_shrink_window
|
||||
B5740,8015CD20,src/code/cutscene_camera
|
||||
B7CC0,8015F2A0,src/code/z_kaleido_manager
|
||||
B7F60,8015F540,src/code/z_kaleido_scope_call
|
||||
B8250,8015F830,src/code/z_fbdemo_dlftbls
|
||||
B8380,8015F960,src/code/z_fbdemo
|
||||
B8DA0,80160380,src/code/z_fbdemo_fade
|
||||
B90C0,801606A0,src/code/z_fbdemo_circle
|
||||
B9780,80160D60,src/code/z_overlay
|
||||
B9A30,80161010,src/code/z_play
|
||||
BF050,80166630,src/code/z_play_hireso
|
||||
C4160,8016B740,src/code/PreRender
|
||||
C6C60,8016E240,src/code/TwoHeadGfxArena
|
||||
C6E70,8016E450,src/code/TwoHeadArena
|
||||
C7030,8016E610,src/code/audio_stop_all_sfx
|
||||
C70A0,8016E680,src/code/audio_thread_manager
|
||||
C7490,8016EA70,src/code/title_setup
|
||||
C76A0,8016EC80,src/code/game
|
||||
C7F30,8016F510,src/code/gamealloc
|
||||
C8070,8016F650,src/code/graph
|
||||
C8D20,80170300,src/code/gfxalloc
|
||||
C8D80,80170360,src/code/listalloc
|
||||
C8ED0,801704B0,src/code/main
|
||||
C91F0,801707D0,src/code/padmgr
|
||||
CA500,80171AE0,src/code/sched
|
||||
CB320,80172900,src/code/speed_meter
|
||||
CC080,80173660,src/code/su_mtx
|
||||
CC6E0,80173CC0,src/code/sys_cfb
|
||||
CCA50,80174030,src/code/sys_cmpdma
|
||||
CCE10,801743F0,src/code/sys_initial_check
|
||||
CD1E0,801747C0,src/code/sys_math
|
||||
CD4D0,80174AB0,src/code/sys_math3d
|
||||
D3D90,8017B370,src/code/sys_math_atan
|
||||
D4040,8017B620,src/code/sys_matrix
|
||||
D6B70,8017E150,src/code/sys_ucode
|
||||
D6BC0,8017E1A0,src/code/sys_rumble
|
||||
D6F50,8017E530,src/code/sys_freeze
|
||||
D6F80,8017E560,src/code/c_keyframe
|
||||
D9540,80180B20,src/code/sys_slowly
|
||||
D96A0,80180C80,src/code/sys_flashrom
|
||||
D9E70,80181450,src/code/kanread
|
||||
DA950,80181F30,src/code/osFlash
|
||||
DB4B0,80182A90,src/audio/lib/synthesis
|
||||
DEDD0,801863B0,src/audio/lib/heap
|
||||
E2850,80189E30,src/audio/lib/load
|
||||
E68D0,8018DEB0,src/audio/lib/thread
|
||||
E83E0,8018F9C0,src/audio/lib/dcache
|
||||
E8460,8018FA40,src/audio/lib/aisetnextbuf
|
||||
E8610,8018FBF0,src/audio/lib/playback
|
||||
EA6E0,80191CC0,src/audio/lib/effects
|
||||
EB1B0,80192790,src/audio/lib/seqplayer
|
||||
EEB20,80196100,src/audio/code_8019AE40
|
||||
EEB90,80196170,padding/EEB90
|
||||
EEBA0,80196180,src/audio/code_8019AEC0
|
||||
EEBF0,801961D0,src/audio/code_8019AF00
|
||||
F8A60,801A0040,src/audio/voice_external
|
||||
F8DA0,801A0380,src/audio/voice_internal
|
||||
F9770,801A0D50,src/audio/sfx
|
||||
FB6B0,801A2C90,src/audio/sequence
|
||||
FD640,801A4C20,src/code/jpegutils
|
||||
FDB60,801A5140,src/code/jpegdecoder
|
||||
FE150,801A5730,src/code/z_game_over
|
||||
FE5E0,801A5BC0,src/code/z_construct
|
||||
|
||||
offset,vram,.dummy #.text
|
||||
FE5F0R,801A5BD0,rsp/aspMain
|
||||
FF5A0R,801A6B80,rsp/gspS2DEX2.fifo
|
||||
100E60R,801A8440,rsp/njpgdspMain
|
||||
|
||||
offset,vram,.data
|
||||
101950,801A8F30,src/code/z_en_a_keep
|
||||
1019B0,801A8F90,src/code/z_en_item00
|
||||
101D30,801A9310,src/code/z_eff_blure
|
||||
101DE0,801A93C0,src/code/z_eff_shield_particle
|
||||
101E20,801A9400,src/code/z_effect
|
||||
101E90,801A9470,src/code/z_effect_soft_sprite
|
||||
101EA0,801A9480,src/code/z_effect_soft_sprite_old_init
|
||||
101F90,801A9570,src/code/z_effect_soft_sprite_dlftbls
|
||||
1023E0,801A99C0,src/code/flg_set
|
||||
102770,801A9D50,src/code/z_actor
|
||||
102AC0,801AA0A0,src/code/z_actor_dlftbls
|
||||
108110,801AF6F0,src/code/z_bgcheck
|
||||
108200,801AF7E0,src/code/z_camera
|
||||
10DA10,801B4FF0,src/code/z_collision_btltbls
|
||||
10DCF0,801B52D0,src/code/z_collision_check
|
||||
10E040,801B5620,src/code/z_debug_display
|
||||
10EB80,801B6160,src/code/z_debug_mode
|
||||
10EC10,801B61F0,src/code/z_demo
|
||||
10EC60,801B6240,src/code/z_draw
|
||||
10FD00,801B72E0,src/code/z_eff_footmark
|
||||
10FD90,801B7370,src/code/z_en_hy_code
|
||||
10FF10,801B74F0,src/code/z_face_reaction
|
||||
111320,801B8900,src/code/z_eventmgr
|
||||
1113C0,801B89A0,src/code/z_fireobj
|
||||
111400,801B89E0,src/code/z_game_dlftbls
|
||||
111560,801B8B40,src/code/z_horse
|
||||
1115B0,801B8B90,src/code/z_jpeg
|
||||
1115F0,801B8BD0,src/code/z_kaleido_setup
|
||||
111620,801B8C00,src/code/z_kankyo
|
||||
1123F0,801B99D0,src/code/z_lib
|
||||
112420,801B9A00,src/code/z_lifemeter
|
||||
112540,801B9B20,src/code/z_lights
|
||||
112560,801B9B40,src/code/z_map_disp
|
||||
1127D0,801B9DB0,src/code/z_map_data
|
||||
112FE0,801BA5C0,src/code/z_map_exp
|
||||
113050,801BA630,src/code/z_msgevent
|
||||
113150,801BA730,src/code/z_parameter
|
||||
113810,801BADF0,src/code/z_player_lib
|
||||
114930,801BBF10,src/code/z_quake
|
||||
114960,801BBF40,src/code/z_rcp
|
||||
115780,801BCD60,src/code/z_room
|
||||
1157A0,801BCD80,src/code/z_inventory
|
||||
116190,801BD770,src/code/z_scene
|
||||
116270,801BD850,src/code/object_table
|
||||
1176A0,801BEC80,src/code/z_scene_proc
|
||||
1177E0,801BEDC0,src/code/z_scene_table
|
||||
119780,801C0D60,src/code/z_schedule
|
||||
1197E0,801C0DC0,src/code/z_skelanime
|
||||
119800,801C0DE0,src/code/z_skin_matrix
|
||||
119840,801C0E20,src/code/z_sub_s
|
||||
1198F0,801C0ED0,src/code/z_sram_JPN
|
||||
11A320,801C1900,src/code/z_viscvg
|
||||
11A380,801C1960,src/code/z_vr_box
|
||||
11A510,801C1AF0,src/code/z_message
|
||||
123D00,801CB2E0,src/code/z_message_staff
|
||||
123F40,801CB520,src/code/z_player_call
|
||||
123F60,801CB540,src/code/z_kaleido_manager
|
||||
123FA0,801CB580,src/code/z_fbdemo_dlftbls
|
||||
124070,801CB650,src/code/z_fbdemo
|
||||
1240A0,801CB680,src/code/z_fbdemo_fade
|
||||
1240F0,801CB6D0,src/code/z_fbdemo_circle
|
||||
124140,801CB720,src/code/z_play
|
||||
124170,801CB750,src/code/z_play_hireso
|
||||
1248E0,801CBEC0,src/code/game
|
||||
1248F0,801CBED0,src/code/graph
|
||||
124900,801CBEE0,src/code/main
|
||||
124910,801CBEF0,src/code/padmgr
|
||||
124920,801CBF00,src/code/speed_meter
|
||||
124950,801CBF30,src/code/sys_math
|
||||
124990,801CBF70,src/code/sys_math3d
|
||||
1249B0,801CBF90,src/code/sys_math_atan
|
||||
1251C0,801CC7A0,src/code/sys_matrix
|
||||
125240,801CC820,src/code/sys_ucode
|
||||
125250,801CC830,src/code/sys_rumble
|
||||
125260,801CC840,src/audio/lib/data
|
||||
129390,801D0970,src/audio/lib/synthesis
|
||||
1293C0,801D09A0,src/audio/lib/load
|
||||
1293D0,801D09B0,src/audio/lib/thread
|
||||
1293F0,801D09D0,src/audio/lib/aisetnextbuf
|
||||
129570,801D0B50,src/audio/lib/effects
|
||||
129580,801D0B60,src/audio/lib/seqplayer
|
||||
1295E0,801D0BC0,src/audio/lib/stack
|
||||
1299E0,801D0FC0,src/audio/code_8019AF00
|
||||
12BF40,801D3520,src/audio/voice_external
|
||||
12C1B0,801D3790,src/audio/voice_internal
|
||||
12C3F0,801D39D0,src/audio/sfx_params
|
||||
12E7D0,801D5DB0,src/audio/sfx
|
||||
12E820,801D5E00,src/audio/sequence
|
||||
12E840,801D5E20,src/audio/session_config
|
||||
|
||||
offset,vram,.rodata
|
||||
12F150,801D6730,src/code/z_en_item00
|
||||
12F3E0,801D69C0,src/code/z_eff_blure
|
||||
12F410,801D69F0,src/code/z_eff_shield_particle
|
||||
12F420,801D6A00,src/code/z_eff_spark
|
||||
12F430,801D6A10,src/code/z_eff_ss_dead
|
||||
12F440,801D6A20,src/code/z_effect
|
||||
12F460,801D6A40,src/code/z_effect_soft_sprite
|
||||
12F4A0,801D6A80,src/code/z_effect_soft_sprite_old_init
|
||||
12F4C0,801D6AA0,src/code/flg_set
|
||||
12FD70,801D7350,src/code/z_DLF
|
||||
12FDF0,801D73D0,src/code/z_actor
|
||||
130120,801D7700,src/code/z_actor_dlftbls
|
||||
130170,801D7750,src/code/z_bgcheck
|
||||
130360,801D7940,src/code/z_bg_item
|
||||
130370,801D7950,src/code/z_camera
|
||||
130B80,801D8160,src/code/z_collision_btltbls
|
||||
130BB0,801D8190,src/code/z_collision_check
|
||||
130C30,801D8210,src/code/z_debug_mode
|
||||
130C90,801D8270,src/code/z_demo
|
||||
130EF0,801D84D0,src/code/z_draw
|
||||
130F00,801D84E0,src/code/z_eff_footmark
|
||||
130F10,801D84F0,src/code/z_eventmgr
|
||||
130F60,801D8540,src/code/z_fcurve_data
|
||||
130F70,801D8550,src/code/z_fcurve_data_skelanime
|
||||
130F80,801D8560,src/code/z_fireobj
|
||||
130F90,801D8570,src/code/z_horse
|
||||
130FE0,801D85C0,src/code/z_jpeg
|
||||
131070,801D8650,src/code/z_kaleido_setup
|
||||
131120,801D8700,src/code/z_kanfont
|
||||
131180,801D8760,src/code/z_kankyo
|
||||
131540,801D8B20,src/code/z_lib
|
||||
131550,801D8B30,src/code/z_lifemeter
|
||||
131570,801D8B50,src/code/z_lights
|
||||
131580,801D8B60,src/code/z_map_disp
|
||||
1315C0,801D8BA0,src/code/z_map_exp
|
||||
1316A0,801D8C80,src/code/z_msgevent
|
||||
1316F0,801D8CD0,src/code/z_olib
|
||||
131710,801D8CF0,src/code/z_parameter
|
||||
131930,801D8F10,src/code/z_player_lib
|
||||
131A20,801D9000,src/code/z_prenmi
|
||||
131A40,801D9020,src/code/z_quake
|
||||
131BD0,801D91B0,src/code/z_room
|
||||
131C90,801D9270,src/code/z_inventory
|
||||
131D20,801D9300,src/code/z_scene
|
||||
131ED0,801D94B0,src/code/z_scene_proc
|
||||
131F00,801D94E0,src/code/z_scene_table
|
||||
1324A0,801D9A80,src/code/z_skelanime
|
||||
1325B0,801D9B90,src/code/z_skin
|
||||
1325C0,801D9BA0,src/code/z_skin_matrix
|
||||
1325D0,801D9BB0,src/code/z_sub_s
|
||||
132880,801D9E60,src/code/z_sram_JPN
|
||||
1335C0,801DABA0,src/code/z_circle_tex
|
||||
133DC0,801DB3A0,src/code/z_rumble
|
||||
133DD0,801DB3B0,src/code/z_view
|
||||
133E00,801DB3E0,src/code/z_vimode
|
||||
133EB0,801DB490,src/code/z_visfbuf
|
||||
133EC0,801DB4A0,src/code/z_vr_box
|
||||
133F50,801DB530,src/code/z_message
|
||||
1360F0,801DD6D0,src/code/z_message_staff
|
||||
136400,801DD9E0,src/code/cutscene_camera
|
||||
1364C0,801DDAA0,src/code/z_kaleido_manager
|
||||
1365B0,801DDB90,src/code/z_fbdemo
|
||||
136620,801DDC00,src/code/z_fbdemo_circle
|
||||
136640,801DDC20,src/code/z_overlay
|
||||
1366D0,801DDCB0,src/code/z_play
|
||||
136A90,801DE070,src/code/z_play_hireso
|
||||
136AA0,801DE080,src/code/PreRender
|
||||
136AB0,801DE090,src/code/audio_stop_all_sfx
|
||||
136AC0,801DE0A0,src/code/audio_thread_manager
|
||||
136B10,801DE0F0,src/code/game
|
||||
136C80,801DE260,src/code/gamealloc
|
||||
136CB0,801DE290,src/code/graph
|
||||
136DD0,801DE3B0,src/code/main
|
||||
136EA0,801DE480,src/code/padmgr
|
||||
136F10,801DE4F0,src/code/sched
|
||||
137080,801DE660,src/code/sys_cmpdma
|
||||
1370A0,801DE680,src/code/sys_initial_check
|
||||
137130,801DE710,src/code/sys_math
|
||||
137140,801DE720,src/code/sys_math3d
|
||||
1371F0,801DE7D0,src/code/sys_math_atan
|
||||
137200,801DE7E0,src/code/sys_matrix
|
||||
137210,801DE7F0,src/code/sys_freeze
|
||||
137230,801DE810,src/code/c_keyframe
|
||||
137260,801DE840,src/code/sys_slowly
|
||||
137290,801DE870,src/code/sys_flashrom
|
||||
137570,801DEB50,src/audio/lib/synthesis
|
||||
1375A0,801DEB80,src/audio/lib/heap
|
||||
1375F0,801DEBD0,src/audio/lib/load
|
||||
137680,801DEC60,src/audio/lib/thread
|
||||
1377D0,801DEDB0,src/audio/lib/playback
|
||||
137800,801DEDE0,src/audio/lib/effects
|
||||
137830,801DEE10,src/audio/lib/seqplayer
|
||||
137EC0,801DF4A0,src/audio/code_8019AF00
|
||||
1381A0,801DF780,src/audio/voice_internal
|
||||
138330,801DF910,src/audio/sfx
|
||||
138350,801DF930,src/audio/sequence
|
||||
1383E0,801DF9C0,src/audio/session_init
|
||||
1383F0,801DF9D0,src/code/z_game_over
|
||||
1384A0,801DFA80,src/audio/tables/soundfont_table
|
||||
138730,801DFD10,assets/audio/sequence_font_table
|
||||
138940,801DFF20,src/audio/tables/sequence_table
|
||||
139150,801E0730,src/audio/tables/samplebank_table
|
||||
|
||||
offset,vram,.dummy #.rodata
|
||||
139190R,801E0770,rsp/aspMain
|
||||
139470R,801E0A50,rsp/gspF3DZEX2.NoN.PosLight.fifo_legacy
|
||||
13AC20R,801E2200,rsp/gspF3DZEX2.NoN.PosLight.fifo
|
||||
13C670R,801E3C50,rsp/gspS2DEX2.fifo
|
||||
13CA00R,801E3FE0,rsp/njpgdspMain
|
||||
|
||||
offset,vram,.bss
|
||||
13CA60,801E4040,src/code/z_en_item00
|
||||
13CA70,801E4050,src/code/z_effect
|
||||
146350,801ED930,src/code/flg_set
|
||||
146360,801ED940,src/code/z_actor
|
||||
1463F0,801ED9D0,src/code/z_actor_dlftbls
|
||||
146410,801ED9F0,src/code/z_bgcheck
|
||||
1466B0,801EDC90,src/code/z_camera
|
||||
1468C0,801EDEA0,src/code/z_collision_check
|
||||
148130,801EF710,src/code/z_common_data
|
||||
14CDB0,801F4390,src/code/z_debug
|
||||
14CDC0,801F43A0,src/code/z_debug_display
|
||||
14CDD0,801F43B0,src/code/z_debug_mode
|
||||
14DB90,801F5170,src/code/z_demo
|
||||
14DC40,801F5220,src/code/z_eventmgr
|
||||
14DC80,801F5260,src/code/z_kankyo
|
||||
14DD90,801F5370,src/code/z_lifemeter
|
||||
14DDC0,801F53A0,src/code/z_lights
|
||||
14DF50,801F5530,src/code/z_malloc
|
||||
14DF80,801F5560,src/code/z_map_disp
|
||||
14E690,801F5C70,src/code/z_nmi_buff
|
||||
14E6A0,801F5C80,src/code/z_parameter
|
||||
14E700,801F5CE0,src/code/z_player_lib
|
||||
14E850,801F5E30,src/code/z_quake
|
||||
14E8F0,801F5ED0,src/code/z_scene_proc
|
||||
14E900,801F5EE0,src/code/z_skelanime
|
||||
14E910,801F5EF0,src/code/z_skin
|
||||
14F810,801F6DF0,src/code/z_sram_JPN
|
||||
14F820,801F6E00,src/code/z_rumble
|
||||
14F940,801F6F20,src/code/z_vr_box_draw
|
||||
14F950,801F6F30,src/code/z_message
|
||||
14F980,801F6F60,src/code/z_player_call
|
||||
14F990,801F6F70,src/code/z_shrink_window
|
||||
14F9A0,801F6F80,src/code/cutscene_camera
|
||||
14FA40,801F7020,src/code/z_kaleido_manager
|
||||
14FA50,801F7030,src/code/z_kaleido_scope_call
|
||||
14FA60,801F7040,src/code/z_play
|
||||
14FC50,801F7230,src/code/PreRender
|
||||
150E40,801F8420,src/code/game
|
||||
150F20,801F8500,src/code/graph
|
||||
150FA0,801F8580,src/code/main
|
||||
1548E0,801FBEC0,src/code/sched
|
||||
154910,801FBEF0,src/code/speed_meter
|
||||
154960,801FBF40,src/code/sys_cfb
|
||||
154A10,801FBFF0,src/code/sys_cmpdma
|
||||
154A20,801FC000,src/code/sys_math3d
|
||||
154C30,801FC210,src/code/sys_matrix
|
||||
154C40,801FC220,src/code/sys_flashrom
|
||||
155E70,801FD450,src/code/osFlash
|
||||
155F50,801FD530,src/audio/lib/heap
|
||||
155F70,801FD550,src/audio/lib/load
|
||||
156020,801FD600,src/audio/code_8019AF00
|
||||
1563D0,801FD9B0,src/audio/voice_internal
|
||||
156540,801FDB20,src/audio/sfx
|
||||
158B30,80200110,src/audio/sequence
|
||||
159A10,80200FF0,src/audio/session_config
|
||||
161CC0,802092A0,src/code/jpegdecoder
|
||||
161CD0,802092B0,.end
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
offset,vram,.text
|
||||
0,808042D0,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase
|
||||
3860,80807B30,src/overlays/gamestates/ovl_file_choose/z_file_nameset_JPN
|
||||
8DB0,8080D080,src/overlays/gamestates/ovl_file_choose/z_file_choose_JPN
|
||||
|
||||
offset,vram,.data
|
||||
F620,808138F0,src/overlays/gamestates/ovl_file_choose/z_file_nameset_data
|
||||
FB00,80813DD0,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase
|
||||
FB40,80813E10,src/overlays/gamestates/ovl_file_choose/z_file_nameset_JPN
|
||||
FC90,80813F60,src/overlays/gamestates/ovl_file_choose/z_file_choose_JPN
|
||||
|
||||
offset,vram,.rodata
|
||||
FEF0,808141C0,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase
|
||||
FFF0,808142C0,src/overlays/gamestates/ovl_file_choose/z_file_nameset_JPN
|
||||
100D0,808143A0,src/overlays/gamestates/ovl_file_choose/z_file_choose_JPN
|
||||
|
||||
offset,vram,.ovl
|
||||
101B0,80814480,src/overlays/gamestates/ovl_file_choose/ovl_file_choose_reloc
|
||||
|
||||
offset,vram,.bss
|
||||
10900,80814BD0,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase
|
||||
10910,80814BE0,src/overlays/gamestates/ovl_file_choose/z_file_nameset_JPN
|
||||
10920,80814BF0,.end
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
offset,vram,.text
|
||||
0,80815DE0,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_collect
|
||||
2880,80818660,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug
|
||||
51A0,8081AF80,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item
|
||||
71A0,8081CF80,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_map
|
||||
9EE0,8081FCC0,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask
|
||||
B690,80821470,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_prompt
|
||||
B860,80821640,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_JPN
|
||||
|
||||
offset,vram,.data
|
||||
15520,8082B300,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_collect
|
||||
15740,8082B520,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug
|
||||
15A10,8082B7E0,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item
|
||||
15AF0,8082B8D0,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_map
|
||||
15C60,8082BA40,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask
|
||||
15D50,8082BB30,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_prompt
|
||||
15D60,8082BB40,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_JPN
|
||||
|
||||
offset,vram,.rodata
|
||||
165A0,8082C380,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug
|
||||
16780,8082C560,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item
|
||||
16800,8082C5E0,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask
|
||||
168C0,8082C6A0,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_prompt
|
||||
169F0,8082C7D0,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_JPN
|
||||
|
||||
offset,vram,.ovl
|
||||
16B20,8082C900,src/overlays/kaleido_scope/ovl_kaleido_scope/ovl_kaleido_scope_reloc
|
||||
|
||||
offset,vram,.bss
|
||||
18440,8082E220,src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_JPN
|
||||
18480,8082E260,.end
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -34,10 +34,10 @@ def main():
|
|||
description="Print information on a symbol/address"
|
||||
" (and possibly surrounding symbols)"
|
||||
" from the spimdisasm disassembly context saved in"
|
||||
" expected/build/VERSION/context.csv"
|
||||
" expected/VERSION/asm/context.csv"
|
||||
)
|
||||
parser.add_argument("sym_or_vma")
|
||||
default_version = "n64-us"
|
||||
default_version = "n64-jp-1.1"
|
||||
parser.add_argument(
|
||||
"-v",
|
||||
"--version",
|
||||
|
|
@ -90,7 +90,7 @@ def main():
|
|||
|
||||
syms_by_section_by_file = dict[str, dict[str, list[Sym]]]()
|
||||
|
||||
context_csv_p = Path(f"expected/build/{args.mm_version}/context.csv")
|
||||
context_csv_p = Path(f"extracted/{args.mm_version}/asm/context.csv")
|
||||
if not context_csv_p.exists():
|
||||
print(f"Context file does not exist: {context_csv_p}")
|
||||
print(f"Hint: run `make VERSION={args.mm_version} disasm`")
|
||||
|
|
|
|||
|
|
@ -0,0 +1,440 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# SPDX-FileCopyrightText: © 2024 ZeldaRET
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
import argparse
|
||||
import collections
|
||||
from colorama import Fore, Style
|
||||
from dataclasses import dataclass
|
||||
import difflib
|
||||
import itertools
|
||||
import math
|
||||
from pathlib import Path
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
import multiprocessing
|
||||
import multiprocessing.pool
|
||||
from typing import Dict, Iterator, List, Optional, Tuple
|
||||
|
||||
|
||||
def green(s: str) -> str:
|
||||
return f"{Fore.GREEN}{s}{Style.RESET_ALL}"
|
||||
|
||||
|
||||
def red(s: str) -> str:
|
||||
return f"{Fore.RED}{s}{Style.RESET_ALL}"
|
||||
|
||||
|
||||
# Make interrupting with ^C less jank
|
||||
# https://stackoverflow.com/questions/72967793/keyboardinterrupt-with-python-multiprocessing-pool
|
||||
def set_sigint_ignored():
|
||||
import signal
|
||||
|
||||
signal.signal(signal.SIGINT, signal.SIG_IGN)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Inst:
|
||||
func_name: str
|
||||
mnemonic: str
|
||||
regs: List[str]
|
||||
imm: Optional[int]
|
||||
reloc_type: Optional[str]
|
||||
reloc_symbol: Optional[str]
|
||||
|
||||
|
||||
FUNC_RE = re.compile(r"([0-9a-f]+) <(.*)>:")
|
||||
|
||||
|
||||
def parse_func_name(line: str) -> str:
|
||||
match = FUNC_RE.match(line)
|
||||
if not match:
|
||||
raise Exception(f"could not parse function name from '{line}'")
|
||||
return match.group(2)
|
||||
|
||||
|
||||
def is_branch(mnemonic: str) -> bool:
|
||||
return mnemonic.startswith("b") and mnemonic != "break"
|
||||
|
||||
|
||||
def parse_inst(func_name: str, line: str) -> Inst:
|
||||
parts = line.split()
|
||||
addr = int(parts[0][:-1], 16)
|
||||
mnemonic = parts[2]
|
||||
regs = []
|
||||
imm = None
|
||||
if len(parts) > 3:
|
||||
for part in parts[3].split(","):
|
||||
if "(" in part: # load/store
|
||||
offset_str, rest = part.split("(")
|
||||
regs.append(rest[:-1])
|
||||
imm = int(offset_str, 10)
|
||||
elif is_branch(mnemonic):
|
||||
try:
|
||||
# convert branch targets to relative offsets
|
||||
offset = int(part, 16)
|
||||
imm = offset - addr - 4
|
||||
except ValueError:
|
||||
regs.append(part)
|
||||
else:
|
||||
try:
|
||||
imm = int(part, 0)
|
||||
except ValueError:
|
||||
regs.append(part)
|
||||
return Inst(func_name, mnemonic, regs, imm, None, None)
|
||||
|
||||
|
||||
def run_objdump(path: Path, args: List[str]) -> str:
|
||||
if not path.exists():
|
||||
raise Exception(f"file {path} does not exist")
|
||||
|
||||
command = ["mips-linux-gnu-objdump"] + args + [str(path)]
|
||||
try:
|
||||
return subprocess.run(
|
||||
command,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
check=True,
|
||||
encoding="utf-8",
|
||||
).stdout
|
||||
except subprocess.CalledProcessError as e:
|
||||
return ""
|
||||
|
||||
|
||||
def disassemble(path: Path) -> List[Inst]:
|
||||
lines = run_objdump(path, ["-drz", "-m", "mips:4300", "-j", ".text"]).splitlines()
|
||||
result = []
|
||||
|
||||
func_name = None
|
||||
i = 6 # skip preamble
|
||||
while i < len(lines):
|
||||
row = lines[i]
|
||||
i += 1
|
||||
|
||||
if not row:
|
||||
continue
|
||||
|
||||
if not row.startswith(" "):
|
||||
func_name = parse_func_name(row)
|
||||
continue
|
||||
|
||||
if not func_name:
|
||||
raise Exception(f"no function name for line '{row}'")
|
||||
|
||||
inst = parse_inst(func_name, row)
|
||||
|
||||
if i < len(lines) and lines[i].startswith("\t"):
|
||||
reloc = lines[i]
|
||||
i += 1
|
||||
_, inst.reloc_type, inst.reloc_symbol = reloc.split()
|
||||
|
||||
result.append(inst)
|
||||
|
||||
# trim trailing nops
|
||||
while result and result[-1].mnemonic == "nop":
|
||||
result.pop()
|
||||
return result
|
||||
|
||||
|
||||
def pair_instructions(
|
||||
insts1: List[Inst], insts2: List[Inst]
|
||||
) -> Iterator[Tuple[Optional[Inst], Optional[Inst]]]:
|
||||
differ = difflib.SequenceMatcher(
|
||||
a=[(inst.func_name, inst.mnemonic) for inst in insts1],
|
||||
b=[(inst.func_name, inst.mnemonic) for inst in insts2],
|
||||
autojunk=False,
|
||||
)
|
||||
for tag, i1, i2, j1, j2 in differ.get_opcodes():
|
||||
for inst1, inst2 in itertools.zip_longest(insts1[i1:i2], insts2[j1:j2]):
|
||||
yield (inst1, inst2)
|
||||
|
||||
WEAK_COS = ('cosf', '__cosf')
|
||||
WEAK_SIN = ('sinf', '__sinf')
|
||||
|
||||
def has_diff(inst1: Inst, inst2: Inst) -> bool:
|
||||
if (
|
||||
inst1.func_name != inst2.func_name
|
||||
or inst1.mnemonic != inst2.mnemonic
|
||||
or inst1.regs != inst2.regs
|
||||
):
|
||||
return True
|
||||
|
||||
if inst1.reloc_type == inst2.reloc_type and inst1.reloc_type in (
|
||||
"R_MIPS_HI16",
|
||||
"R_MIPS_LO16",
|
||||
):
|
||||
# ignore symbol differences
|
||||
return False
|
||||
|
||||
if (
|
||||
inst1.reloc_symbol in WEAK_COS and inst2.reloc_symbol in WEAK_COS
|
||||
or inst1.reloc_symbol in WEAK_SIN and inst2.reloc_symbol in WEAK_SIN
|
||||
):
|
||||
# map weak function symbols to their strong counterpart
|
||||
return False
|
||||
|
||||
return inst1 != inst2
|
||||
|
||||
|
||||
def get_section_sizes(path: Path) -> Dict[str, int]:
|
||||
lines = run_objdump(path, ["-h"]).splitlines()
|
||||
if len(lines) < 5:
|
||||
return {}
|
||||
|
||||
result = {}
|
||||
for i in range(5, len(lines), 2):
|
||||
parts = lines[i].split()
|
||||
name = parts[1]
|
||||
size = int(parts[2], 16)
|
||||
# Pad to 0x10-byte alignment
|
||||
result[parts[1]] = (size + 0xF) & ~0xF
|
||||
return result
|
||||
|
||||
|
||||
def get_section_hex_dump(path: Path, section: str) -> List[str]:
|
||||
lines = run_objdump(path, ["-s", "-j", section]).splitlines()
|
||||
return lines[4:]
|
||||
|
||||
|
||||
def parse_hex_dump(lines: List[str]) -> bytes:
|
||||
result = bytearray()
|
||||
for line in lines:
|
||||
# strip offset
|
||||
line = " ".join(line.strip().split(" ", 1)[1])
|
||||
data = line[:35].replace(" ", "")
|
||||
result.extend(bytes.fromhex(data))
|
||||
|
||||
# pad to 0x10-byte alignment
|
||||
while len(result) % 0x10:
|
||||
result.append(0)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def find_functions_with_diffs(version: str, c_path: str):
|
||||
object_path = Path(c_path).with_suffix(".o")
|
||||
|
||||
expected_dir = Path("expected/build") / version
|
||||
build_dir = Path("build") / version
|
||||
|
||||
insts1 = disassemble(expected_dir / object_path)
|
||||
insts2 = disassemble(build_dir / object_path)
|
||||
|
||||
functions_with_diffs = collections.OrderedDict()
|
||||
for inst1, inst2 in pair_instructions(insts1, insts2):
|
||||
if inst1 is None and inst2 is not None:
|
||||
functions_with_diffs[inst2.func_name] = True
|
||||
elif inst1 is not None and inst2 is None:
|
||||
functions_with_diffs[inst1.func_name] = True
|
||||
elif inst1 is not None and inst2 is not None and has_diff(inst1, inst2):
|
||||
functions_with_diffs[inst1.func_name] = True
|
||||
functions_with_diffs[inst2.func_name] = True
|
||||
|
||||
if not functions_with_diffs:
|
||||
print(f"{c_path} OK")
|
||||
return
|
||||
|
||||
print(f"{c_path} functions with diffs:")
|
||||
for func_name in functions_with_diffs:
|
||||
print(f" {func_name}")
|
||||
|
||||
|
||||
def find_data_diffs(version: str, c_path: str):
|
||||
object_path = Path(c_path).with_suffix(".o")
|
||||
|
||||
expected_dir = Path("expected/build") / version
|
||||
build_dir = Path("build") / version
|
||||
|
||||
sizes1 = get_section_sizes(expected_dir / object_path)
|
||||
sizes2 = get_section_sizes(build_dir / object_path)
|
||||
rodata_dump1 = get_section_hex_dump(expected_dir / object_path, ".rodata")
|
||||
rodata_dump2 = get_section_hex_dump(build_dir / object_path, ".rodata")
|
||||
rodata1 = parse_hex_dump(rodata_dump1)
|
||||
rodata2 = parse_hex_dump(rodata_dump2)
|
||||
|
||||
rodata_matches = rodata1 == rodata2
|
||||
data_size_matches = sizes1.get(".data", 0) == sizes2.get(".data", 0)
|
||||
bss_size_matches = sizes1.get(".bss", 0) == sizes2.get(".bss", 0)
|
||||
|
||||
if rodata_matches:
|
||||
print(f"{c_path} .rodata OK")
|
||||
else:
|
||||
print(
|
||||
f"{c_path} .rodata differs: expected size 0x{sizes1.get('.rodata', 0):04x} vs build size 0x{sizes2.get('.rodata', 0):04x}"
|
||||
)
|
||||
print(f" expected:")
|
||||
print("\n".join(rodata_dump1))
|
||||
print(f" build:")
|
||||
print("\n".join(rodata_dump2))
|
||||
|
||||
if data_size_matches:
|
||||
print(f"{c_path} .data size OK")
|
||||
else:
|
||||
print(
|
||||
f"{c_path} .data size differs: expected size 0x{sizes1.get('.data', 0):04x} vs build size 0x{sizes2.get('.data', 0):04x}"
|
||||
)
|
||||
|
||||
if bss_size_matches:
|
||||
print(f"{c_path} .bss size OK")
|
||||
else:
|
||||
print(
|
||||
f"{c_path} .bss size differs: expected size 0x{sizes1.get('.bss', 0):04x} vs build size 0x{sizes2.get('.bss', 0):04x}"
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ObjectDataForComparison:
|
||||
insts1: List[Inst]
|
||||
insts2: List[Inst]
|
||||
sizes1: Dict[str, int]
|
||||
sizes2: Dict[str, int]
|
||||
rodata1: bytes
|
||||
rodata2: bytes
|
||||
|
||||
|
||||
def get_object_data_for_comparison(object1: Path, object2: Path):
|
||||
if not object2.exists():
|
||||
return None
|
||||
insts1 = disassemble(object1)
|
||||
insts2 = disassemble(object2)
|
||||
sizes1 = get_section_sizes(object1)
|
||||
sizes2 = get_section_sizes(object2)
|
||||
rodata_dump1 = get_section_hex_dump(object1, ".rodata")
|
||||
rodata_dump2 = get_section_hex_dump(object2, ".rodata")
|
||||
rodata1 = parse_hex_dump(rodata_dump1)
|
||||
rodata2 = parse_hex_dump(rodata_dump2)
|
||||
return ObjectDataForComparison(insts1, insts2, sizes1, sizes2, rodata1, rodata2)
|
||||
|
||||
|
||||
def print_summary(version: str, csv: bool, only_not_ok: bool):
|
||||
expected_dir = Path("expected/build") / version
|
||||
build_dir = Path("build") / version
|
||||
|
||||
expected_object_files = sorted(expected_dir.glob("src/**/*.o"))
|
||||
|
||||
comparison_data_list: List[multiprocessing.pool.AsyncResult] = []
|
||||
|
||||
with multiprocessing.Pool(initializer=set_sigint_ignored) as p:
|
||||
for expected_object in expected_object_files:
|
||||
build_object = build_dir / expected_object.relative_to(expected_dir)
|
||||
comparison_data_list.append(
|
||||
p.apply_async(
|
||||
get_object_data_for_comparison,
|
||||
(expected_object, build_object),
|
||||
)
|
||||
)
|
||||
if csv:
|
||||
print("path,expected,actual,.text,.rodata,.data size,.bss size")
|
||||
for expected_object, data_async in zip(
|
||||
expected_object_files, comparison_data_list
|
||||
):
|
||||
c_path = expected_object.relative_to(expected_dir).with_suffix(".c")
|
||||
data = data_async.get()
|
||||
|
||||
if data is None:
|
||||
if csv:
|
||||
print(
|
||||
f"{c_path},NA,NA,NA,NA,NA,NA"
|
||||
)
|
||||
else:
|
||||
print(
|
||||
f"{red(f'{c_path}')} doesn't exist yet"
|
||||
)
|
||||
continue
|
||||
|
||||
insts1 = data.insts1
|
||||
insts2 = data.insts2
|
||||
|
||||
added = 0
|
||||
removed = 0
|
||||
changed = 0
|
||||
for inst1, inst2 in pair_instructions(insts1, insts2):
|
||||
if inst1 is None and inst2 is not None:
|
||||
added += 1
|
||||
elif inst1 is not None and inst2 is None:
|
||||
removed += 1
|
||||
elif inst1 is not None and inst2 is not None and has_diff(inst1, inst2):
|
||||
changed += 1
|
||||
|
||||
if insts1:
|
||||
text_progress = max(1.0 - (added + removed + changed) / len(insts1), 0)
|
||||
else:
|
||||
text_progress = 1.0
|
||||
|
||||
sizes1 = data.sizes1
|
||||
sizes2 = data.sizes2
|
||||
rodata1 = data.rodata1
|
||||
rodata2 = data.rodata2
|
||||
|
||||
rodata_matches = rodata1 == rodata2
|
||||
data_size_matches = sizes1.get(".data", 0) == sizes2.get(".data", 0)
|
||||
bss_size_matches = sizes1.get(".bss", 0) == sizes2.get(".bss", 0)
|
||||
|
||||
if only_not_ok:
|
||||
if (
|
||||
text_progress == 1
|
||||
and rodata_matches
|
||||
and data_size_matches
|
||||
and bss_size_matches
|
||||
):
|
||||
continue
|
||||
|
||||
if csv:
|
||||
print(
|
||||
f"{c_path},{len(insts1)},{len(insts2)},{text_progress:.3f},{rodata_matches},{data_size_matches},{bss_size_matches}"
|
||||
)
|
||||
else:
|
||||
ok = green("OK")
|
||||
diff = red("diff")
|
||||
text_progress_str = (
|
||||
ok
|
||||
if text_progress == 1
|
||||
else red(f"{math.floor(text_progress * 100):>2}%")
|
||||
)
|
||||
rodata_str = ok if rodata_matches else diff
|
||||
data_size_str = ok if data_size_matches else diff
|
||||
bss_size_str = ok if bss_size_matches else diff
|
||||
print(
|
||||
f"text:{text_progress_str:<13} rodata:{rodata_str:<13} data size:{data_size_str:<13} bss size:{bss_size_str:<13} {c_path}"
|
||||
)
|
||||
sys.stdout.flush()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Calculate progress matching retail")
|
||||
parser.add_argument(
|
||||
"file",
|
||||
metavar="FILE",
|
||||
nargs="?",
|
||||
help="find functions with diffs in the given source file (if omitted, print summary of diffs for all files)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-v",
|
||||
"--version",
|
||||
dest="mm_version",
|
||||
help="version to compare",
|
||||
default="n64-jp-1.1",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--data",
|
||||
help="diff .data size, .bss size, and .rodata contents instead of text",
|
||||
action="store_true",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--not-ok",
|
||||
help="only print non-OK files",
|
||||
action="store_true",
|
||||
dest="only_not_ok",
|
||||
)
|
||||
parser.add_argument("--csv", help="print summary CSV", action="store_true")
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.file is not None:
|
||||
if args.data:
|
||||
find_data_diffs(args.mm_version, args.file)
|
||||
else:
|
||||
find_functions_with_diffs(args.mm_version, args.file)
|
||||
else:
|
||||
print_summary(args.mm_version, args.csv, args.only_not_ok)
|
||||
Loading…
Reference in New Issue