Pal engine2 (#1106)

* Work on engine2

* Fix some names

* Match init_hud_element_list

* Fix stuff

* fix stuff

* Update src/msg.c

Co-authored-by: Alex Bates <alex@nanaian.town>

* condtionally define constants

* fix warning

---------

Co-authored-by: Anghelo Carvajal <angheloalf95@gmail.com>
Co-authored-by: Alex Bates <alex@nanaian.town>
Co-authored-by: Ethan Roseman <ethteck@gmail.com>
This commit is contained in:
Marijn van der Werf 2023-08-07 06:50:01 +02:00 committed by GitHub
parent 38c7785bfd
commit ff4935de77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 7260 additions and 249 deletions

View File

@ -661,10 +661,20 @@ void hud_element_clear_cache(void) {
func_801413F8();
}
#if VERSION_PAL
extern Addr D_80200000;
#endif
void init_hud_element_list(void) {
if (!gGameStatusPtr->isBattle) {
if (gHudElementCacheBufferBattle != NULL) {
#if VERSION_PAL
if (gHudElementCacheBufferBattle != D_80200000) {
general_heap_free(gHudElementCacheBufferBattle);
}
#else
general_heap_free(gHudElementCacheBufferBattle);
#endif
gHudElementCacheBufferBattle = NULL;
}

View File

@ -3,7 +3,7 @@
#include "sprite.h"
#include "imgfx.h"
#if VERSION_IQUE
#if VERSION_IQUE || VERSION_PAL
// TODO: remove if section is split in iQue release
extern Addr imgfx_data_ROM_START;
#endif

View File

@ -33,18 +33,41 @@ enum RewindArrowStates {
#define MSG_ROM_START 0x1B83000
#endif
#if VERSION_PAL
#define CONST_A 7
#define CONST_B 5.0
#else
#define CONST_A 6
#define CONST_B 6.0
#endif
typedef MessageImageData* MessageImageDataList[1];
s32 D_8014C280[] = { 0x028001E0, 0x01FF0000, 0x028001E0, 0x01FF0000 };
u8 MessagePlural[] = { MSG_CHAR_LOWER_S, MSG_CHAR_READ_END };
#if VERSION_PAL
u8 MessagePlural_de[] = { MSG_CHAR_LOWER_N, MSG_CHAR_READ_END };
#endif
u8 MessageSingular[] = { MSG_CHAR_READ_ENDL, MSG_CHAR_READ_END };
#if VERSION_PAL
s32 gCurrentLanguage = 0;
void* D_PAL_8014AE50[] = {
[LANGUAGE_EN] = msg_pal_en_ROM_START,
[LANGUAGE_DE] = msg_pal_de_ROM_START,
[LANGUAGE_FR] = msg_pal_fr_ROM_START,
[LANGUAGE_ES] = msg_pal_es_ROM_START,
};
#endif
s16 gNextMessageBuffer = 0;
//TODO Vtx
s32 gRewindArrowQuad[] = {
ALIGNED(8) s32 gRewindArrowQuad[] = {
0xFFF00009, 0x00000000, 0x00000000, 0xFFFFFFFF,
0x00100009, 0x00000000, 0x04000000, 0xFFFFFFFF,
0xFFF0FFF7, 0x00000000, 0x00000240, 0xFFFFFFFF,
@ -436,7 +459,7 @@ s32 _update_message(MessagePrintState* printer) {
}
case MSG_WINDOW_STATE_SCROLLING_BACK:
printer->scrollingTime++;
if (printer->scrollingTime >= 5) {
if (printer->scrollingTime >= (s32)(5 * DT)) {
printer->windowState = MSG_WINDOW_STATE_WAITING_FOR_CHOICE;
printer->curOption = printer->targetOption;
printer->selectedOption = printer->curOption;
@ -502,7 +525,7 @@ s32 _update_message(MessagePrintState* printer) {
(!(printer->stateFlags & (MSG_STATE_FLAG_10 | MSG_STATE_FLAG_4)) &&
(gGameStatusPtr->curButtons[0] & BUTTON_A)))
{
printer->curLinePos += 6;
printer->curLinePos += CONST_A;
}
if (printer->curLinePos >= printer->nextLinePos) {
@ -676,7 +699,7 @@ extern s32 MsgLetterRasterOffsets[];
extern s32 MsgLetterPaletteOffsets[];
extern MsgVoice MsgVoices[];
#if VERSION_IQUE
#if VERSION_IQUE || VERSION_PAL
INCLUDE_ASM(s32, "msg", msg_copy_to_print_buffer);
#else
void msg_copy_to_print_buffer(MessagePrintState* printer, s32 arg1, s32 arg2) {
@ -1323,7 +1346,7 @@ void initialize_printer(MessagePrintState* printer, s32 arg1, s32 arg2) {
printer->printBuffer[0] = MSG_CHAR_PRINT_END;
printer->printDelayTime = 1;
printer->charsPerChunk = 1;
printer->unk_464 = 6;
printer->unk_464 = CONST_A;
printer->srcBuffer = NULL;
printer->msgID = 0;
printer->curPrintDelay = 0;
@ -1391,6 +1414,10 @@ void initialize_printer(MessagePrintState* printer, s32 arg1, s32 arg2) {
printer->sizeScale = 1.0f;
}
#if VERSION_PAL
void dma_load_msg(u32 msgID, void* dest);
INCLUDE_ASM(s32, "msg", dma_load_msg);
#else
void dma_load_msg(u32 msgID, void* dest) {
u8* addr = (u8*) MSG_ROM_START + (msgID >> 14); // (msgID >> 16) * 4
u8* offset[2]; // start, end
@ -1403,6 +1430,7 @@ void dma_load_msg(u32 msgID, void* dest) {
// Load the msg data
dma_copy(MSG_ROM_START + offset[0], MSG_ROM_START + offset[1], dest);
}
#endif
s8* load_message_to_buffer(s32 msgID) {
s8* prevBufferPos;
@ -2158,7 +2186,7 @@ void msg_draw_choice_pointer(MessagePrintState* printer) {
posY = printer->windowOffsetPos.y + printer->windowBasePos.y + printer->cursorPosY[printer->selectedOption];
} else {
s32 baseX, baseY, targetX, targetY;
f32 moveToTargetAlpha = (f32)(printer->scrollingTime + 1.0) / 6.0;
f32 moveToTargetAlpha = (f32)(printer->scrollingTime + 1.0) / CONST_B;
baseX = printer->windowOffsetPos.x + printer->windowBasePos.x + printer->cursorPosX[printer->selectedOption];
targetX = printer->windowOffsetPos.x + printer->windowBasePos.x + printer->cursorPosX[printer->targetOption];
@ -2339,7 +2367,7 @@ void draw_message_window(MessagePrintState* printer) {
}
}
#if VERSION_IQUE
#if VERSION_IQUE || VERSION_PAL
INCLUDE_ASM(s32, "msg", appendGfx_message);
#else
void appendGfx_message(MessagePrintState* printer, s16 posX, s16 posY, u16 additionalOffsetX, u16 additionalOffsetY,

688
ver/pal/asm/bss3.s Normal file
View File

@ -0,0 +1,688 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
#ifndef SHIFT
.section .bss
dlabel gAuxSpriteShadingProfile
.space 4
dlabel gHudElementsNumber
.space 4
dlabel gCurrentCustomModelGfxBuildersPtr
.space 4
dlabel D_801512BC
.space 4
dlabel entity_numEntities
.space 4
dlabel gEntityHeapBase
.space 4
dlabel gHudElementCacheTableRaster
.space 4
dlabel gCurrentModels
.space 4
dlabel gHudElementCacheTablePalette
.space 4
dlabel gAnimCount
.space 4
dlabel gMsgBGScrollAmtX
.space 4
dlabel D_801512DC
.space 4
dlabel gCurrentTransformGroups
.space 4
dlabel gMsgGlobalWaveCounter
.space 4
dlabel gCurrentCustomModelGfxPtr
.space 4
dlabel gLastCreatedEntityIndex
.space 4
dlabel gBackgroundFogModePtr
.space 4
dlabel gMsgVarImages
.space 4
dlabel ItemEntitiesCreated
.space 4
dlabel gCurrentModelTreeRoot
.space 4
dlabel gEntityHeapBottom
.space 4
dlabel D_80151304
.space 4
dlabel gCurrentRoomDoorSounds
.space 4
dlabel gMsgBGScrollAmtY
.space 2
dlabel D_8015130E
.space 2
dlabel gEntityHideMode
.space 4
dlabel gHudElementCacheBuffer
.space 4
dlabel gEntityModelCount
.space 4
dlabel D_8015131C
.space 4
dlabel D_80151320
.space 4
dlabel entity_numShadows
.space 4
dlabel gSpriteShadingProfile
.space 4
dlabel isAreaSpecificEntityDataLoaded
.space 4
dlabel entity_updateCounter
.space 4
dlabel gTriggerCount
.space 4
dlabel D_80151338
.space 4
dlabel gHudElementCacheSize
.space 4
dlabel gCurrentDoorSounds
.space 4
dlabel D_80151344
.space 4
dlabel D_80151348
.space 0x00000038 - 0x10 # TODO: find offset
dlabel gWorldEntityList
.space 0x00000078
dlabel gBattleEntityList
.space 0x00000078
dlabel gCurrentEntityListPtr
.space 4
dlabel D_80151474
.space 4
dlabel gWorldShadowList
.space 0x000000f0
dlabel gBattleShadowList
.space 0x000000f0
dlabel gCurrentShadowListPtr
.space 4
dlabel wEntityDataLoadedSize
.space 4
dlabel bEntityDataLoadedSize
.space 4
dlabel D_80151664
.space 4
dlabel wEntityBlueprint
.space 0x00000078
.space 8
dlabel bEntityBlueprint
.space 0x00000014
dlabel D_801516FC
.space 4
dlabel gMainGameState
.space 0x00000040
dlabel gCurrentTextureHeader
.space 0x00000030
dlabel wModelList
.space 0x00000400
dlabel bModelList
.space 0x00000400
dlabel wTransformGroups
.space 0x00000010
dlabel bTransformGroups
.space 0x00000010
dlabel wCustomModelGfx
.space 0x00000080
dlabel bCustomModelGfx
.space 0x00000080
dlabel wCustomModelGfxBuilders
.space 0x00000080
dlabel bCustomModelGfxBuilders
.space 0x00000080
dlabel wModelLocalVtxBuffers
.space 0x00000040
dlabel bModelLocalVtxBuffers
.space 0x00000040
dlabel gCurrentModelLocalVtxBuffers
.space 4
dlabel wModelTreeRoot
.space 4
dlabel bModelTreeRoot
.space 4
dlabel D_8015221C
.space 4
dlabel D_80152220
.space 0x00000800
dlabel D_80152A20
.space 0x00000800
dlabel wBackgroundFogMode
.space 1
dlabel bBackgroundFogMode
.space 1
dlabel D_80153222
.space 1
dlabel D_80153223
.space 1
dlabel mdl_treeIterPos
.space 4
dlabel wFogSettings
.space 0x00000020
dlabel bFogSettings
.space 0x0000001c
dlabel gCurrentFogSettings
.space 4
dlabel texPannerMainU
.space 0x00000040
dlabel texPannerMainV
.space 0x00000040
dlabel texPannerAuxU
.space 0x00000040
dlabel texPannerAuxV
.space 0x00000040
dlabel TextureHeapPos
.space 4
dlabel mtg_IterIdx
.space 2
dlabel mtg_SearchModelID
.space 2
dlabel mtg_FoundModelNode
.space 4
dlabel mtg_MinChild
.space 2
dlabel mtg_MaxChild
.space 2
dlabel D_80153378
.space 8
dlabel depthCopyBuffer
.space 0x00000020
dlabel mdl_renderTaskLists
.space 0x0000000c
dlabel mdl_renderTaskQueueIdx
.space 4
dlabel mdl_renderTaskCount
.space 0x00000010
dlabel D_801533C0
.space 0x00000300
dlabel D_801536C0
.space 0x00000300
dlabel D_801539C0
.space 0x00000040
dlabel D_80153A00
.space 0x00000040
dlabel gCurrentAnimMeshListPtr
.space 4
dlabel gAnimModelFogEnabled
.space 4
dlabel gAnimModelFogR
.space 4
dlabel gAnimModelFogG
.space 4
dlabel gAnimModelFogB
.space 4
dlabel gAnimModelFogA
.space 4
dlabel gAnimModelFogStart
.space 4
dlabel gAnimModelFogEnd
.space 4
dlabel gAnimVtxSegment
.space 4
dlabel D_80153A64
.space 4
dlabel gAnimRotMtx
.space 0x00000040
dlabel gAnimScaleMtx
.space 0x00000040
dlabel gAnimTranslateMtx
.space 0x00000040
dlabel gAnimRotScaleMtx
.space 0x00000040
dlabel gAnimTreeRoot
.space 8
dlabel gWorldEntityModelList
.space 0x00000400
dlabel gBattleEntityModelList
.space 0x00000400
dlabel gCurrentEntityModelList
.space 4
dlabel D_80154374
.space 4
dlabel entity_fog_enabled
.space 4
dlabel entity_fog_red
.space 4
dlabel entity_fog_green
.space 4
dlabel entity_fog_blue
.space 4
dlabel entity_fog_alpha
.space 4
dlabel entity_fog_dist_min
.space 4
dlabel entity_fog_dist_max
.space 4
dlabel D_80154394
.space 0x0000000c
dlabel gWorldWorkerList
.space 0x00000040
dlabel gBattleWorkerList
.space 0x00000040
dlabel gCurrentWorkerListPtr
.space 4
dlabel D_80154424
.space 0x0000000c
dlabel gMessageBuffers
.space 0x00000800
dlabel gMessagePrinters
.space 0x00001008
dlabel gMessageMsgVars
.space 0x00000060
dlabel D_80155C98
.space 8
dlabel gMessageWindowProjMatrix
.space 0x00000080
dlabel D_80155D20
.space 4
dlabel D_8015DD24
.space 0x00000050
dlabel msg_drawState
.space 4
dlabel D_8015DD78
.space 8
dlabel D_80155D80
.space 4
dlabel ItemEntityAlternatingSpawn
.space 4
dlabel ItemEntityRenderGroup
.space 4
dlabel D_80155D8C
.space 2
dlabel D_80155D8E
.space 2
dlabel D_80155D90
.space 2
dlabel pad_ItemEntity
.space 0x000000E
dlabel WorldItemEntities
.space 0x00000400
dlabel BattleItemEntities
.space 0x00000400
dlabel gCurrentItemEntities
.space 4
dlabel isPickingUpItem
.space 2
dlabel D_801565A6
.space 2
dlabel D_801565A8
.space 4
dlabel D_801565AC
.space 4
dlabel D_801565B0
.space 0x00000330
.space 0x14
dlabel ItemPickupIconID
.space 4
dlabel ItemPickupStateDelay
.space 4
dlabel D_801568E8
.space 4
dlabel D_801568EC
.space 4
dlabel ItemPickupGotOutline
.space 4
dlabel GotItemTutorialPrinter
.space 4
dlabel GotItemTutorialClosed
.space 4
dlabel D_801568FC
# .space 4
dlabel screen_overlay_frontType
.space 4
dlabel screen_overlay_frontZoom
.space 4
dlabel screen_overlay_backType
.space 4
dlabel screen_overlay_backZoom
.space 4
dlabel D_80156910
.space 0x00000010
dlabel ImgFXCurrentTexture
.space 0x00000028
dlabel ImgFXVtxBuffers
.space 8
dlabel imgfx_vtxBuf
.space 4
dlabel ImgFXInstances
.space 4
dlabel D_80156958
.space 8
dlabel D_80156960
.space 8
dlabel D_80156968
.space 8
dlabel D_80156970
.space 0x00000010
dlabel ImgFXAnimHeaders
.space 0x000005a0
dlabel ImgFXDataCache
.space 0x00000040
dlabel gHudElementsWorld
.space 0x00000500
dlabel gHudElementsBattle
.space 0x00000500
dlabel gHudElements
.space 4
dlabel gHudElementCacheBufferWorld
.space 4
dlabel gHudElementCacheSizeWorld
.space 4
dlabel D_8015796C
.space 4
dlabel gHudElementCacheTableRasterWorld
.space 0x00000600
dlabel gHudElementCacheTablePaletteWorld
.space 0x00000600
dlabel gHudElementCacheBufferBattle
.space 4
dlabel gHudElementCacheSizeBattle
.space 4
dlabel D_80158578
.space 8
dlabel gHudElementCacheTableRasterBattle
.space 0x00000600
dlabel gHudElementCacheTablePaletteBattle
.space 0x00000600
dlabel D_80159180
.space 0x00000010
dlabel wTriggerList
.space 0x00000100
dlabel bTriggerList
.space 0x00000100
dlabel gCurrentTriggerListPtr
.space 4
dlabel D_80159394
.space 0x0000000c
dlabel gBackgroundPalette
.space 0x00000200
dlabel gBackroundLastScrollValue
.space 0x00000020 - 0x10
dlabel wSpriteShadingProfile
.space 0x000000b0
dlabel bSpriteShadingProfile
.space 0x000000b0
dlabel wSpriteShadingProfileAux
.space 0x000000b0
dlabel bSpriteShadingProfileAux
.space 0x000000b0
dlabel SpriteShadingPalette
.space 0x00000020
dlabel wEnvSounds
.space 0x00000118
dlabel bEnvSounds
.space 0x00000118
dlabel gCurrentEnvSounds
.space 4
dlabel SfxReverbMode
.space 4
dlabel D_80159AD8
.space 8
dlabel MusicDefaultVolume
.space 2
dlabel MusicTargetVolume
.space 2
dlabel MusicMaxVolume
.space 2
dlabel MusicCurrentVolume
.space 2
dlabel D_80159AE8
.space 8
dlabel gMusicSettings
.space 0x00000060
dlabel D_80159B50
.space 0x00000200 - 0x14
.space 4
.space 0x10
dlabel gWindows
.space 0x00000800
dlabel gCollisionStatus
.space 0x00000028
dlabel gCurrentHiddenPanels
.space 0x10
.space 8
dlabel mdl_textureHandles
.space 0x00002200
dlabel ScreenOverlays
.space 0x00000030
dlabel AmbientSoundData
.space 0x00000010
dlabel CreateEntityVarArgBuffer
.space 0x00000010
dlabel D_8015C7E0
.space 0x20
dlabel D_8015C800
.space 0x7800
dlabel D_80164000
.space 0x32C60
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,44 @@
.set noat /* allow manual use of $at */
.set noreorder /* don't insert nops after branches */
/* Generated by spimdisasm 1.11.1 */
glabel dma_load_msg
/* BA664 80124314 27BDFFD8 */ addiu $sp, $sp, -0x28
/* BA668 80124318 AFB00018 */ sw $s0, 0x18($sp)
/* BA66C 8012431C 0080802D */ daddu $s0, $a0, $zero
/* BA670 80124320 AFB20020 */ sw $s2, 0x20($sp)
/* BA674 80124324 00A0902D */ daddu $s2, $a1, $zero
/* BA678 80124328 3C028015 */ lui $v0, %hi(gCurrentLanguage)
/* BA67C 8012432C 8C42AE4C */ lw $v0, %lo(gCurrentLanguage)($v0)
/* BA680 80124330 27A60010 */ addiu $a2, $sp, 0x10
/* BA684 80124334 AFBF0024 */ sw $ra, 0x24($sp)
/* BA688 80124338 AFB1001C */ sw $s1, 0x1C($sp)
/* BA68C 8012433C 00021080 */ sll $v0, $v0, 2
/* BA690 80124340 3C118015 */ lui $s1, %hi(D_PAL_8014AE50)
/* BA694 80124344 02228821 */ addu $s1, $s1, $v0
/* BA698 80124348 8E31AE50 */ lw $s1, %lo(D_PAL_8014AE50)($s1)
/* BA69C 8012434C 00101382 */ srl $v0, $s0, 14
/* BA6A0 80124350 02222021 */ addu $a0, $s1, $v0
/* BA6A4 80124354 0C00A5AF */ jal dma_copy
/* BA6A8 80124358 24850004 */ addiu $a1, $a0, 0x4
/* BA6AC 8012435C 27A60010 */ addiu $a2, $sp, 0x10
/* BA6B0 80124360 3210FFFF */ andi $s0, $s0, 0xFFFF
/* BA6B4 80124364 8FA20010 */ lw $v0, 0x10($sp)
/* BA6B8 80124368 00108080 */ sll $s0, $s0, 2
/* BA6BC 8012436C 02221021 */ addu $v0, $s1, $v0
/* BA6C0 80124370 00502021 */ addu $a0, $v0, $s0
/* BA6C4 80124374 0C00A5AF */ jal dma_copy
/* BA6C8 80124378 24850008 */ addiu $a1, $a0, 0x8
/* BA6CC 8012437C 0240302D */ daddu $a2, $s2, $zero
/* BA6D0 80124380 8FA40010 */ lw $a0, 0x10($sp)
/* BA6D4 80124384 8FA50014 */ lw $a1, 0x14($sp)
/* BA6D8 80124388 02242021 */ addu $a0, $s1, $a0
/* BA6DC 8012438C 0C00A5AF */ jal dma_copy
/* BA6E0 80124390 02252821 */ addu $a1, $s1, $a1
/* BA6E4 80124394 8FBF0024 */ lw $ra, 0x24($sp)
/* BA6E8 80124398 8FB20020 */ lw $s2, 0x20($sp)
/* BA6EC 8012439C 8FB1001C */ lw $s1, 0x1C($sp)
/* BA6F0 801243A0 8FB00018 */ lw $s0, 0x18($sp)
/* BA6F4 801243A4 03E00008 */ jr $ra
/* BA6F8 801243A8 27BD0028 */ addiu $sp, $sp, 0x28

File diff suppressed because it is too large Load Diff

View File

@ -545,9 +545,62 @@ segments:
- [0xA3878, vtx, vtx/drawbox1]
- [0xA38B8]
- [0xA3900]
- [0xA4520, bin]
- name: engine2
type: code
start: 0xA4520
vram: 0x8010E1D0
follows_vram: engine1
subsegments:
- [auto, hasm, bss3]
- [auto, c, entity]
- [auto, c, game_states]
- [auto, c, model]
- [auto, c, B4580]
- [auto, c, entity_model]
- [auto, c, worker]
- [auto, c, msg]
- [auto, c, C50A0]
- [auto, c, cd180_len_38f0]
- [auto, c, CEE40]
- [auto, c, imgfx]
- [auto, c, hud_element]
- [auto, c, dba20_len_350]
- [auto, c, trigger]
- [auto, c, background]
- [auto, c, audio/ambience]
- [auto, c, windows]
- [auto, c, sprite_shading]
- [auto, c, audio/sfx]
- [auto, c, audio/e0b30_len_b80]
- [auto, .data, entity]
- [auto, .data, game_states]
- [auto, .data, model]
- [auto, .data, B4580]
- [auto, .data, entity_model]
- [auto, .data, msg]
- [auto, .data, C50A0]
- start: 0xE1610
type: .data
name: cd180_len_38f0
subsegments:
- [0xE1610]
- [0xE1620, i4, ui/stencil/star, 32, 64]
- [0xE1A20, i4, ui/stencil/mario, 64, 64]
- [0xE2220, i4, ui/stencil/sharp_circle, 32, 32]
- [0xE2420, i8, ui/stencil/blurry_circle, 64, 64]
- [0xE3420, vtx, vtx/stencil1]
- [0xE34C0]
- [0xE3690, vtx, vtx/stencil2]
- [0xE3810]
- [auto, .data, CEE40]
- [auto, .data, imgfx]
- [auto, .data, hud_element]
- [auto, .data, background]
- [auto, .data, audio/ambience]
- [auto, .data, windows]
- [auto, .data, audio/sfx]
- [auto, .data, audio/e0b30_len_b80]
- [0xE61D0]
- name: evt
type: code
dir: evt
@ -1057,6 +1110,32 @@ segments:
- [0x2705A0, bin]
- start: 0x2705A0
type: pm_imgfx_data
name: imgfx_data
vram: 0
animations:
- ["shock", 0x14358]
- ["shiver", 0x18200]
- ["vertical_pipe_curl", 0x1A858]
- ["horizontal_pipe_curl", 0x1E830]
- ["startle", 0x29458]
- ["flutter_down", 0x314E0]
- ["unfurl", 0x33498]
- ["get_in_bed", 0x38988]
- ["spirit_capture", 0x39228]
- ["unused_1", 0x5B7A8]
- ["unused_2", 0x7CF10]
- ["unused_3", 0x86490]
- ["tutankoopa_gather", 0x96258]
- ["tutankoopa_swirl_2", 0xA1820]
- ["tutankoopa_swirl_1", 0xACDE8]
- ["shuffle_cards", 0xBBF68]
- ["flip_card_1", 0xC0490]
- ["flip_card_2", 0xC49B8]
- ["flip_card_3", 0xC6150]
- ["cymbal_crush", 0xCA380]
- [0x33A930, pm_sprite_shading_profiles, sprite_shading_profiles]
- [0x33B7A0, bin]
@ -13461,9 +13540,15 @@ segments:
- 2E_Credits
- [0x2132440, bin]
- [0x21B0000, bin] # German
- [0x2330000, bin] # French
- [0x24B0000, bin] # Spanish
- start: 0x21B0000
name: msg_pal_de
type: bin # TODO: turn into pm_msg
- start: 0x2330000
name: msg_pal_fr
type: bin # TODO: turn into pm_msg
- start: 0x24B0000
name: msg_pal_es
type: bin # TODO: turn into pm_msg
- [0x2600000, pm_map_data, mapfs]
- [0x2FD7362, bin]

View File

@ -1,3 +1,9 @@
ui_stencil_star_png = 0x8014B2D0; // rom:0xE1620
ui_stencil_mario_png = 0x8014B6D0; // rom:0xE1A20
ui_stencil_sharp_circle_png = 0x8014BED0; // rom:0xE2220
ui_stencil_blurry_circle_png = 0x8014C0D0; // rom:0xE2420
vtx_stencil1 = 0x8014D0D0; // rom:0xE3420
vtx_stencil2 = 0x8014D340; // rom:0xE3690
D_802E9170 = 0x802EF470; // rom:0x10C4F0
D_802E91F0 = 0x802EF4F0; // rom:0x10C570
D_802E9270 = 0x802EF570; // rom:0x10C5F0

View File

@ -1,3 +1,7 @@
charset_postcard_OFFSET = 0xB290;
D_D158 = 0xD158;
charset_ROM_START = 0x110CB0;
icon_ROM_START = 0x1DA1E0;
set_time_freeze_mode = 0x80027008;
get_time_freeze_mode = 0x80027110;
start_rumble = 0x80028E88;
@ -9,6 +13,7 @@ _heap_free = 0x8002919C;
_heap_realloc = 0x80029244;
cosine = 0x80029354;
sign = 0x80029430;
int_to_string = 0x80029444;
mem_clear = 0x80029580;
transform_point = 0x800295A0;
copy_matrix = 0x800296A0;
@ -152,21 +157,44 @@ BasicAI_Main = 0x8004AA5C;
basic_ai_suspend = 0x8004AD1C;
ai_check_fwd_collisions = 0x8004AD64;
snd_start_sound = 0x800557C0;
snd_start_sound_with_shift = 0x80055820;
snd_adjust_sound_with_shift = 0x80055910;
snd_stop_sound = 0x800559A0;
snd_load_ambient = 0x80055A28;
snd_ambient_play = 0x80055A44;
snd_ambient_stop_quick = 0x80055A84;
snd_ambient_stop_slow = 0x80055AC8;
snd_ambient_pause = 0x80055B1C;
snd_ambient_resume = 0x80055B70;
snd_ambient_is_stopped = 0x80055BC4;
snd_ambient_mute = 0x80055BF8;
snd_ambient_set_volume = 0x80055C4C;
snd_ambient_80055760 = 0x80055D40;
snd_ambient_stop_all = 0x80055DAC;
snd_ambient_play_only = 0x80055E28;
au_song_load = 0x80055EB4;
au_song_start_variation = 0x80055F50;
au_song_stop = 0x80055FA4;
au_song_is_playing = 0x80055FDC;
snd_set_song_variation_fade = 0x80055FF8;
snd_set_song_variation_fade_time = 0x8005609C;
func_80055AF0 = 0x800560D0;
func_80055B28 = 0x80056108;
func_80055B80 = 0x80056160;
func_80055BB8 = 0x80056198;
snd_set_song_variation = 0x800562A4;
snd_song_set_playback_rate = 0x80056318;
snd_song_set_track_volumes = 0x800563BC;
snd_song_clear_track_volumes = 0x80056428;
bgm_set_proximity_mix_far = 0x80056608;
bgm_set_proximity_mix_near = 0x80056624;
bgm_set_proximity_mix_full = 0x80056648;
bgm_poll_music_events = 0x8005666C;
bgm_flush_music_events = 0x80056688;
audio_set_stereo = 0x8005673C;
audio_set_mono = 0x80056760;
func_800561A4 = 0x80056784;
func_800561E4 = 0x800567C4;
clear_effect_data = 0x8005A27C;
create_effect_instance = 0x8005A89C;
remove_effect = 0x8005AA30;
@ -195,8 +223,10 @@ guOrtho = 0x800648B0;
guPerspectiveF = 0x80064A00;
guPositionF = 0x80064D80;
guPosition = 0x80064F58;
guRotateRPYF = 0x80065140;
sins = 0x80065460;
bcopy = 0x800654C0;
bzero = 0x800657E0;
sprintf = 0x80066360;
guMtxIdent = 0x800682C0;
guMtxIdentF = 0x80068320;
@ -217,6 +247,7 @@ reset_battle_status = 0x8006FE40;
gGameStatusPtr = 0x800714AC;
gMatrixListPos = 0x80071500;
gCurrentDisplayContextIndex = 0x80071504;
nuGfxCfbNum = 0x80073710;
gCurrentCameraID = 0x80073730;
D_800779B0 = 0x80073D00;
gSaveSlotMetadata = 0x80073D14;
@ -231,12 +262,14 @@ HES_Item_Unused_08C = 0x8007E6F8;
HES_Item_Unused_08C_disabled = 0x8007E728;
gItemTable = 0x80083C80;
gItemHudScripts = 0x80086A20;
gItemEntityScripts = 0x8008A174;
gItemIconRasterOffsets = 0x8008A778;
gItemIconPaletteOffsets = 0x8008ACEC;
PartnerIDFromMenuIndex = 0x8008B260;
MenuIndexFromPartnerID = 0x8008B290;
gPartnerPopupProperties = 0x8008B2C0;
gMoveTable = 0x8008B400;
gMessageBoxFrameParts = 0x8008C280;
gAreas = 0x8008F890;
EVS_800936C0 = 0x8008FA60;
EVS_NpcHitRecoil = 0x8008FA7C;
@ -247,6 +280,7 @@ gEncounterState = 0x800969D4;
gCurrentCamID = 0x80096A0C;
nuGfxCfb_ptr = 0x80096A24;
gOverrideFlags = 0x80096A28;
nuGfxCfb = 0x80096A30;
gMainGfxPos = 0x80096A44;
gDisplayContext = 0x80096A4C;
wMapTexName = 0x800AF3B8;
@ -260,242 +294,35 @@ wMapHitName = 0x800D5938;
wMapShapeName = 0x800D5988;
D_800D95E8 = 0x800D5D58;
wMapBgName = 0x800D5DD8;
gCurrentSaveFile = 0x800D7430;
gBattleStatus = 0x800D87E0;
update_entities = 0x8010E1D0;
set_entity_commandlist = 0x8010E6C0;
exec_entity_commandlist = 0x8010E868;
get_entity_by_index = 0x8010F0E8;
get_shadow_by_index = 0x8010F104;
entity_start_script = 0x8010F178;
get_entity_type = 0x8010F1A4;
delete_entity = 0x8010F1D0;
entity_try_partner_interaction_trigger = 0x8010F4DC;
entity_set_render_script = 0x8010F6CC;
clear_entity_data = 0x8010F7B8;
create_entity = 0x801103C4;
MakeEntity = 0x80110838;
SetEntityCullMode = 0x8011099C;
UseDynamicShadow = 0x80110A2C;
AssignScript = 0x80110AB0;
AssignSwitchFlag = 0x80110AF8;
AssignBlockFlag = 0x80110B6C;
AssignChestFlag = 0x80110BB8;
AssignPanelFlag = 0x80110C14;
AssignCrateFlag = 0x80110C70;
create_shadow_type = 0x80110D60;
delete_shadow = 0x80110E28;
entity_raycast_down = 0x801110E8;
set_standard_shadow_scale = 0x8011135C;
set_peach_shadow_scale = 0x801114D4;
is_block_on_ground = 0x80111620;
clear_model_data = 0x80114844;
get_model_from_list_index = 0x80119830;
get_model_list_index_from_tree_index = 0x80119B10;
get_transform_group_index = 0x80119B90;
get_model_center_and_size = 0x80119BEC;
get_transform_group = 0x80119CC0;
mdl_make_transform_group = 0x80119E7C;
enable_transform_group = 0x8011A0D0;
disable_transform_group = 0x8011A160;
clone_model = 0x8011A1F0;
set_model_group_visibility = 0x8011A2C0;
func_8011B950 = 0x8011A450;
enable_world_fog = 0x8011A650;
disable_world_fog = 0x8011A664;
set_world_fog_dist = 0x8011A674;
set_world_fog_color = 0x8011A688;
set_tex_panner = 0x8011A714;
set_main_pan_u = 0x8011A71C;
set_main_pan_v = 0x8011A734;
set_aux_pan_u = 0x8011A74C;
set_aux_pan_v = 0x8011A764;
set_mdl_custom_gfx_set = 0x8011A77C;
set_custom_gfx = 0x8011A7B4;
set_custom_gfx_builders = 0x8011A7D0;
set_background_color_blend = 0x8011A95C;
get_background_color_blend = 0x8011A980;
set_model_fog_color_parameters = 0x8011A9B4;
get_model_fog_color_parameters = 0x8011AA14;
set_model_env_color_parameters = 0x8011AA98;
get_model_env_color_parameters = 0x8011AAD4;
mdl_make_local_vertex_copy = 0x8011AC64;
mdl_get_copied_vertices = 0x8011ADB0;
mdl_get_copied_gfx = 0x8011ADEC;
mdl_project_tex_coords = 0x8011AE2C;
is_point_visible = 0x8011BABC;
mdl_draw_hidden_panel_surface = 0x8011C22C;
mdl_get_next_texture_address = 0x8011C2E4;
mdl_set_all_fog_mode = 0x8011C32C;
clear_render_tasks = 0x8011C390;
queue_render_task = 0x8011C410;
clear_animator_list = 0x8011CD24;
delete_model_animator = 0x8011CF38;
create_model_animator = 0x8011CFB8;
update_model_animator = 0x8011D3BC;
update_model_animator_with_transform = 0x8011D554;
render_animated_model = 0x8011DE04;
get_animator_node_for_tree_index = 0x8011EA74;
get_animator_node_with_id = 0x8011EA98;
get_animator_by_index = 0x8011EAE0;
play_model_animation = 0x8011EC48;
play_model_animation_starting_from = 0x8011EC98;
load_model_animator_tree = 0x8011EEAC;
load_mesh_animator_tree = 0x8011EF74;
clear_entity_models = 0x8011F6B0;
load_entity_model = 0x8011F7E0;
ALT_load_entity_model = 0x8011F8E4;
exec_entity_model_commandlist = 0x8011FA04;
draw_entity_model_A = 0x801207E8;
draw_entity_model_E = 0x80120D88;
set_entity_model_render_command_list = 0x8012187C;
get_entity_model = 0x801218DC;
free_entity_model_by_index = 0x801218FC;
set_entity_model_flags = 0x801219E8;
clear_entity_model_flags = 0x80121A24;
enable_entity_fog = 0x80121AEC;
set_entity_fog_dist = 0x80121B10;
set_entity_fog_color = 0x80121B28;
clear_worker_list = 0x80121BB8;
create_worker_world = 0x80121C58;
create_worker_frontUI = 0x80121D3C;
create_worker_backUI = 0x80121E20;
free_worker = 0x801220C0;
get_worker = 0x8012213C;
clear_printers = 0x80122174;
load_font = 0x80122234;
dma_load_msg = 0x80124314;
msg_get_printer_for_msg = 0x80124420;
msg_printer_load_msg = 0x80124588;
msg_printer_set_origin_pos = 0x801245D8;
cancel_message = 0x80124628;
set_message_images = 0x8012464C;
set_message_msg = 0x8012465C;
set_message_value = 0x80124708;
close_message = 0x80124790;
msg_get_print_char_width = 0x801247A4;
get_msg_properties = 0x80124A88;
get_msg_width = 0x80124F94;
get_msg_lines = 0x80124FD0;
draw_msg = 0x8012500C;
draw_number = 0x801261BC;
msg_draw_frame = 0x8012C6F8;
msg_get_glyph = 0x8012D480;
draw_ci_image_with_clipping = 0x8012D540;
get_item_entity = 0x8012FAF8;
clear_item_entity_data = 0x8012FB90;
make_item_entity = 0x8012FF94;
make_item_entity_nodelay = 0x80130634;
make_item_entity_at_player = 0x801306A0;
remove_item_entity_by_index = 0x8013259C;
test_item_entity_position = 0x80132B68;
set_item_entity_flags = 0x80132CE8;
clear_item_entity_flags = 0x80132D28;
auto_collect_item_entity = 0x80132D50;
is_picking_up_item = 0x80132D88;
set_item_entity_position = 0x80132DAC;
set_screen_overlay_params_front = 0x80136928;
set_screen_overlay_params_back = 0x80136944;
get_screen_overlay_params = 0x80136960;
set_screen_overlay_color = 0x801369B0;
set_screen_overlay_center = 0x801369EC;
set_screen_overlay_center_worldpos = 0x80136A60;
set_screen_overlay_alpha = 0x80136C74;
clear_screen_overlays = 0x80136CA8;
set_map_transition_effect = 0x80136E40;
update_exit_map_screen_overlay = 0x80136E4C;
draw_prev_frame_buffer_at_screen_pos = 0x80137928;
imgfx_init = 0x80138F1C;
func_8013A4D0 = 0x80139070;
imgfx_get_free_instances = 0x801392A4;
imgfx_release_instance = 0x801393F4;
imgfx_update = 0x8013963C;
imgfx_appendGfx_component = 0x80139B10;
hud_element_clear_cache = 0x8013FCA0;
hud_element_create = 0x80140054;
hud_element_draw_clipped = 0x80143358;
hud_element_draw_next = 0x80143374;
hud_element_draw_without_clipping = 0x80143390;
hud_element_set_script = 0x801433AC;
hud_element_free = 0x801434A4;
hud_element_set_render_pos = 0x80143534;
hud_element_get_render_pos = 0x8014355C;
hud_element_set_render_depth = 0x8014358C;
hud_element_set_flags = 0x801435B0;
hud_element_clear_flags = 0x801435DC;
hud_element_set_scale = 0x801437D0;
hud_element_set_alpha = 0x80143A60;
hud_element_set_tint = 0x80143AAC;
hud_element_create_transform_A = 0x80143AD8;
hud_element_set_transform_rotation = 0x80143DD4;
copy_world_hud_element_ref_to_battle = 0x80143E64;
clear_saved_variables = 0x80143ED0;
clear_global_flag = 0x80143F90;
set_global_flag = 0x80144000;
get_global_flag = 0x8014406C;
set_global_byte = 0x801440D0;
get_global_byte = 0x801440E8;
clear_area_flag = 0x801440FC;
set_area_flag = 0x80144150;
get_area_flag = 0x801441A0;
set_area_byte = 0x801441E8;
get_area_byte = 0x80144200;
clear_trigger_data = 0x80144230;
create_trigger = 0x8014431C;
delete_trigger = 0x801447A4;
is_another_trigger_bound = 0x8014481C;
get_trigger_by_id = 0x80144880;
should_collider_allow_interact = 0x80144898;
reset_background_settings = 0x801449A8;
enable_background_wave = 0x80145DBC;
play_ambient_sounds = 0x80145F18;
basic_window_update = 0x80146024;
basic_hidden_window_update = 0x80146124;
set_window_properties = 0x80146878;
update_window_hierarchy = 0x80146920;
replace_window_update = 0x801469F8;
set_window_update = 0x80146A2C;
setup_pause_menu_tab = 0x80146AE0;
clear_sprite_shading_data = 0x80146BF0;
sprite_shading_set_light_source = 0x80146D04;
create_shading_palette = 0x80146D74;
sfx_adjust_env_sound_pos = 0x8014859C;
snd_stop_tracking_env_sound_pos = 0x8014861C;
sfx_play_sound_with_params = 0x80148668;
sfx_stop_sound = 0x8014881C;
sfx_play_sound = 0x80148864;
sfx_play_sound_at_player = 0x80148888;
sfx_play_sound_at_npc = 0x801488B8;
sfx_play_sound_at_position = 0x8014890C;
sfx_get_spatialized_sound_params = 0x801489B4;
bgm_set_song = 0x801494C8;
func_8014A964 = 0x80149514;
bgm_adjust_proximity = 0x80149604;
bgm_set_track_volumes = 0x801496BC;
bgm_clear_track_volumes = 0x80149710;
bgm_set_variation = 0x80149764;
bgm_init_music_players = 0x801497B8;
func_8014AD40 = 0x801498F0;
bgm_pop_song = 0x80149954;
bgm_push_song = 0x801499A8;
bgm_pop_battle_song = 0x80149A1C;
bgm_push_battle_song = 0x80149AA8;
bgm_set_battle_song = 0x80149B3C;
MessagePlural = 0x8014AE40;
MessagePlural_de = 0x8014AE44;
MessageSingular = 0x8014AE48;
gCurrentLanguage = 0x8014AE4C;
gWindowStyles = 0x8014DD20;
gCurrentModels = 0x8014FE9C;
gBackgroundFogModePtr = 0x8014FEC0;
gCurrentRoomDoorSounds = 0x8014FED8;
gEntityHideMode = 0x8014FEE0;
gSpriteShadingProfile = 0x8014FEF8;
gCurrentDoorSounds = 0x8014FF10;
gMusicSettings = 0x801586B0;
gWindows = 0x80158910;
gCollisionStatus = 0x80159110;
gCurrentHiddenPanels = 0x80159138;
CreateEntityVarArgBuffer = 0x8015B390;
D_8014FE84 = 0x8014FE84;
D_8014FE98 = 0x8014FE98;
D_8014FEA0 = 0x8014FEA0;
D_8014FEB4 = 0x8014FEB4;
D_8014FEC4 = 0x8014FEC4;
D_8014FEE4 = 0x8014FEE4;
D_8014FEEC = 0x8014FEEC;
D_8014FF08 = 0x8014FF08;
D_8014FF0C = 0x8014FF0C;
D_801547F8 = 0x801547F8;
D_801548E0 = 0x801548E0;
D_80154934 = 0x80154934;
D_80155B30 = 0x80155B30;
D_80156030 = 0x80156030;
D_80156530 = 0x80156530;
D_80156534 = 0x80156534;
D_80156538 = 0x80156538;
D_80156540 = 0x80156540;
D_80156B40 = 0x80156B40;
D_80157140 = 0x80157140;
D_80157144 = 0x80157144;
D_80157150 = 0x80157150;
D_80157750 = 0x80157750;
D_80157D50 = 0x80157D50;
D_80158710 = 0x80158710;
D_8015B3A0 = 0x8015B3A0;
D_80200000 = 0x80200000;
gBackgroundImage = 0x80200000;
UseBattleCamPreset = 0x8024E5BC;
UseBattleCamPresetImmediately = 0x8024E604;
@ -803,6 +630,7 @@ ExitSplitDoubleDoor = 0x80285EAC;
EnterSplitDoubleDoor = 0x80285ED4;
BaseExitDoor = 0x80285EFC;
BaseEnterDoor = 0x802861C0;
MapTextureMemory = 0x8028E000;
HES_AimMarkerA = 0x802933FC;
HES_AimMarkerB = 0x80293494;
HES_AimMarkerC = 0x8029352C;
@ -890,7 +718,38 @@ action_command_whirlwind_start = 0x802A91E0;
action_command_power_shock_start = 0x802A9210;
action_command_hammer_start = 0x802A9258;
action_command_water_block_start = 0x802A9398;
BattleEntityHeapBottom = 0x802C3000;
spr_get_npc_raster_info = 0x802E4CB8;
MsgCharsets = 0x802F18A8;
D_802EB5C0 = 0x802F18C0;
D_802EB5F0 = 0x802F18F0;
D_802EB620 = 0x802F1920;
D_802EB644 = 0x802F1944;
ui_msg_bubble_left_png = 0x802F1970;
ui_msg_bubble_mid_png = 0x802F1D70;
ui_msg_bubble_right_png = 0x802F1E70;
ui_msg_arrow_png = 0x802F2270;
ui_msg_palettes = 0x802F26F0;
ui_msg_sign_corner_topleft_png = 0x802F28F0;
ui_msg_sign_corner_topright_png = 0x802F2970;
ui_msg_sign_corner_bottomleft_png = 0x802F29F0;
ui_msg_sign_corner_bottomright_png = 0x802F2A70;
ui_msg_lamppost_corner_bottomright_png = 0x802F2AF0;
ui_msg_sign_side_top_png = 0x802F2B70;
ui_msg_sign_side_left_png = 0x802F2C70;
ui_msg_sign_side_right_png = 0x802F2DB0;
ui_msg_sign_side_bottom_png = 0x802F2EF0;
ui_msg_sign_fill_png = 0x802F2FF0;
ui_msg_sign_pal = 0x802F3010;
ui_msg_lamppost_pal = 0x802F3030;
ui_msg_background_png = 0x802F3050;
ui_msg_rewind_arrow_png = 0x802F3850;
ui_msg_rewind_arrow_pal = 0x802F3970;
ui_msg_star_png = 0x802F3990;
ui_msg_star_silhouette_png = 0x802F3BD0;
MsgCharImgTitle = 0x802F3C70;
MsgCharImgNormal = 0x802F4BD0;
MsgCharImgSubtitle = 0x802F9CD0;
D_802F4560 = 0x802FA860;
heap_generalHead = 0x802FB800;
heap_spriteHead = 0x8034F800;