ROM map (Boktai 3): Difference between revisions

From Boktai Hacking Wiki
(MusicPlayer2000)
No edit summary
 
Line 20: Line 20:
|-
|-
| 0x800211c || undefined Video_LoadGlobalTileset_Scripted(void)
| 0x800211c || undefined Video_LoadGlobalTileset_Scripted(void)
|-
| 0x8030c84 || int TextBox_Open(byte * param_1)
|-
| 0x8030d9c || undefined TextBox_OpenScripted(void)
|-
| 0x8031eac || void TextBox_AdvanceVertically(TextBoxOutput * out)
|-
| 0x8031ed8 || undefined TextBox_AdvanceHorizontally(TextBoxOutput * param_1, bool isWide)
|-
| 0x8031f58 || undefined TextBox_DrawCharNarrow(TextBoxOutput * param_1, undefined4 ch)
|-
| 0x8031fa0 || undefined TextBox_DrawCharWide(void)
|-
|-
| 0x8032070 || int16_t Text_ParseEscapeSequence(char * text)
| 0x8032070 || int16_t Text_ParseEscapeSequence(char * text)
Line 27: Line 39:
null terminator. This function will return a pointer to the null
null terminator. This function will return a pointer to the null
terminator instead.
terminator instead.
|-
| 0x8032a44 || int TextBox_DrawTextImpl(int param_1, char * param_2)
|-
| 0x8032b24 || undefined TextBox_DrawText(void)
|-
| 0x8032c54 || void TextBox_SetBounds(TextBoxOutput * param_1, undefined1 x, undefined1 y, undefined1 width, undefined1 height)
|-
| 0x8033e18 || undefined Credits_Update(void)
|-
| 0x8033e74 || int Credits_Destroy(int param_1)
|-
| 0x8033ea4 || undefined Credits_LoadData(void)
|-
| 0x8033fec || undefined Credits_Init(void)
|-
| 0x8034030 || undefined Credits_Create(void)
|-
| 0x810fddc || undefined BikeRace_Render3Digits(void)
|-
| 0x8110834 || undefined BikeRace_RecordScreen_Update(void)
|-
| 0x811086c || undefined BikeRace_RecordScreen_Destroy(void)
|-
| 0x8110894 || int BikeRace_RecordScreen_Init(int param_1)
|-
| 0x8110a40 || undefined BikeRace_RecordScreen_Create(void)
|-
|-
| 0x816381c || void Video_AnimatePalette(ushort * palEntry, byte * timer)
| 0x816381c || void Video_AnimatePalette(ushort * palEntry, byte * timer)
Line 268: Line 306:
|-
|-
| 0x821ab88 || int Script_GetValueSafe(void)
| 0x821ab88 || int Script_GetValueSafe(void)
|-
| 0x821aba8 || int Script_GetKeywordValue(char kw, int fallback)
|-
|-
| 0x821acdc || byte * Script_LookupById(int script_id, uint * param_2)
| 0x821acdc || byte * Script_LookupById(int script_id, uint * param_2)

Latest revision as of 07:43, 25 November 2024

This is the ROM map for Boktai 3 (J).

Address Description
0x80001f0 undefined IRQ_Dispatcher(void)

Copied to IWRAM @ 0x3003a60 during boot, and executed from there

0x8000350 int Video_UpdateSpritePalette(Sprite * param_1, undefined4 * param_2)

Copied to and executed from IWRAM @ 0x03000000. Sprite rendering related.

0x8000430 undefined Video_RenderSprite(Sprite * param_1, undefined4 param_2, undefined4 param_3, undefined4 param_4)

Copied to and executed from IWRAM @ 0x030000e0 (more functions like this follow). Renders one sprite.

0x8000e90 undefined Video_RenderAllSpritesImpl(void)

Copied to and executed from IWRAM @ 0x03000b40. Renders all sprites.

0x800145c undefined main(void)
0x800211c undefined Video_LoadGlobalTileset_Scripted(void)
0x8030c84 int TextBox_Open(byte * param_1)
0x8030d9c undefined TextBox_OpenScripted(void)
0x8031eac void TextBox_AdvanceVertically(TextBoxOutput * out)
0x8031ed8 undefined TextBox_AdvanceHorizontally(TextBoxOutput * param_1, bool isWide)
0x8031f58 undefined TextBox_DrawCharNarrow(TextBoxOutput * param_1, undefined4 ch)
0x8031fa0 undefined TextBox_DrawCharWide(void)
0x8032070 int16_t Text_ParseEscapeSequence(char * text)
0x803223c char * String_FindCharOrNullTerminator(char * s, char ch)

Almost like strchr(3), but strchr would return NULL if it reaches the null terminator. This function will return a pointer to the null terminator instead.

0x8032a44 int TextBox_DrawTextImpl(int param_1, char * param_2)
0x8032b24 undefined TextBox_DrawText(void)
0x8032c54 void TextBox_SetBounds(TextBoxOutput * param_1, undefined1 x, undefined1 y, undefined1 width, undefined1 height)
0x8033e18 undefined Credits_Update(void)
0x8033e74 int Credits_Destroy(int param_1)
0x8033ea4 undefined Credits_LoadData(void)
0x8033fec undefined Credits_Init(void)
0x8034030 undefined Credits_Create(void)
0x810fddc undefined BikeRace_Render3Digits(void)
0x8110834 undefined BikeRace_RecordScreen_Update(void)
0x811086c undefined BikeRace_RecordScreen_Destroy(void)
0x8110894 int BikeRace_RecordScreen_Init(int param_1)
0x8110a40 undefined BikeRace_RecordScreen_Create(void)
0x816381c void Video_AnimatePalette(ushort * palEntry, byte * timer)
0x8163f14 undefined4 __Example_LoadTilemap(undefined4 actor, undefined4 tilemap, short param_3, undefined4 param_4, undefined * palette)
0x8179320 undefined BikeRace_UpdateSpeed(void)
0x81793ec undefined BikeRace_UpdateTimer(void)
0x81db474 void OptionMenu_Update(OptionMenu * menu)
0x81db75c undefined OptionMenu_Destroy(void)
0x81db794 int OptionMenu_Init(OptionMenu * menu)
0x81dbb0c OptionMenu * OptionMenu_Create(void)
0x81dc02c void Menu_EraseRect(uint x, uint y, int width, int height)
0x81dc054 void Video_DrawText(uint x, uint y, char * text)
0x81dc154 void Menu_RenderOption(undefined4 param_1, undefined4 param_2, undefined4 pc, undefined4 option_index)
0x81dc178 undefined Sprite_SetPos(Sprite * param_1, SpritePos * param_2)
0x81dc244 undefined EnterPasswordYesNo_Update(EnterPasswordYesNo * param_1)
0x81dc448 undefined EnterPasswordYesNo_Destroy(EnterPasswordYesNo * param_1)
0x81dc470 int EnterPasswordYesNo_Init(EnterPasswordYesNo * param_1)
0x81dc6d0 void Time_ShowRegionMenu(int param_1)
0x81dc754 void Time_RegionMenuOnSelect(TimeMenu * param_1)

Called when selecting an option in the region menu

0x81dc7a0 void Time_HandleRegionKeypad(TimeMenu * param_1)
0x81dca6c void Time_DestroyRegionMenu(int param_1)
0x81dca9a int Time_LoadRegionList(int param_1)
0x81dca9c int Time_LoadRegionList(void * param_1)
0x81dcdf4 void * Time_StartRegionMenu(void)
0x81ddbc0 void NameEntry_HandleKeypad(int param_1)
0x81de5e4 void TimeMenu_HideSprites(TimeMenu * menu)
0x81de630 void TimeMenu_InitNumberSprites(TimeMenu * menu)
0x81de6c4 void TimeMenu_InitFields(TimeMenu * menu)
0x81de780 void TimeMenu_RenderCursor(TimeMenu * param_1)
0x81de84c void TimeMenu_RenderNumbers(TimeMenu * param_1)
0x81dea60 void TimeMenu_HandleKeypadUpDown(TimeMenu * param_1)
0x81dec2c void TimeMenu_Update(TimeMenu * param_1)
0x81dedf4 undefined TimeMenu_Destroy(void)
0x81dee38 undefined TimeMenu_Init(TimeMenu * menu)
0x81df0ac undefined TimeMenu_Create(void)
0x81df1d8 void PasswordMenu_CalcCursorPosition(PasswordMenu * menu)
0x81df32c undefined PasswordMenu_HandleKeypadUp(void)
0x81df510 void PasswordMenu_HandleKeypadDown(PasswordMenu * menu)
0x81df694 undefined PasswordMenu_HandleKeypadLeft(void)
0x81df878 undefined PasswordMenu_HandleKeypadRight(void)
0x81dfa50 void PasswordMenu_DrawPassword(PasswordMenu * menu)
0x81dfb18 void PasswordMenu_DrawPasswordChar(PasswordMenu * menu, int position)
0x81dfb9c void PasswordMenu_RenderCaret(PasswordMenu * param_1)
0x81dfc1c bool PasswordMenu_AddCharacter(PasswordMenu * param_1)
0x81dfc60 int PasswordMenu_RemoveChar(PasswordMenu * menu)
0x81dfcb4 void PasswordMenu_Update(PasswordMenu * param_1)
0x81e00e8 void PasswordMenu_Destroy(PasswordMenu * param_1)
0x81e013c int PasswordMenu_Init(PasswordMenu * param_1)
0x81e0474 PasswordMenu * PasswordMenu_Create(void)
0x81e2f44 undefined Help_InitHelpScreen(void)
0x8210a8c int Album_GetAcquiredCount(void)
0x8210b50 int Album_GetPageCount(void)
0x8210f04 undefined AlbumMenu_InitUI(AlbumMenu * param_1)
0x82112f4 undefined AlbumMenu_Update(void)
0x821159c undefined AlbumMenu_Init(void)
0x82116a8 undefined AlbumMenu_Create(void)
0x8213888 undefined DollMenu_Update(void)
0x8213d10 undefined Mem_InitializeMemoryWithDMA(void)

Copies interrupt dispatcher (ARM code) from ROM to IWRAM, Clears VRAM/OAM/PAL, and enables game pak & V-Blank interrupts

0x8213fd8 undefined IRQ_DefaultVBlankHandler(void)

Default handler for V-blank IRQ

0x8214144 void IRQ_DefaultVCounterHandler(void)

Default handler for V-counter match IRQ

0x82141b4 undefined IRQ_DefaultHBlankHandler(void)

Default handler for H-blank IRQ (no-op)

0x82141b8 undefined IRQ_DefaultKeypadHandler(void)

Default handler for keypad IRQ (no-op)

0x82141bc undefined IRQ_NoHandler(void)
0x8214424 int Sprite_Install(Sprite * sprite, int param_2)
0x8214450 void Sprite_Uninstall(Sprite * param_1, undefined4 param_2)
0x8215698 undefined Video_GetBackgroundMap(undefined4 bgNum)
0x82156b8 void Video_ClearBackgroundMap(int bgNum)
0x8215c8c GlobalTileSetChunk * Video_FindTileSetChunk(GlobalTileSet * set, undefined2 id)
0x8215d40 int Video_LoadGlobalTileset(undefined4 bgNum, GlobalTileSetFile * tilesetFile, undefined4 blockCount, ushort * blockIds, undefined4 param_5)

Loads tilset from directory id_low=0x4f2d id_high=0xcee5 file=8e32

0x8216e54 TilemapFile * Video_LoadTileMap(ushort id)
0x8218be0 int Video_LoadFont(void)
0x8218c78 GBA_Tile * Video_GetFontNarrowData(void)
0x8218c94 undefined * Video_GetFontWideData(void)
0x8218cb0 void Video_ClearBackgroundMap0(void)
0x8218d1c undefined Video_LoadCharFromFont(undefined4 param_1, undefined4 ch, undefined4 param_3, undefined4 param_4, undefined4 param_5)
0x8218f2c void Video_DrawCharNarrow(undefined4 ch, undefined4 x, undefined4 y, undefined4 param_4)
0x8218fb4 undefined Video_DrawCharWide(void)
0x82195e0 void Sprite_Destroy(Sprite * param_1)
0x8219624 void Video_RenderAllSprites(void)

Calls Video_RenderAllSpritesImpl in IWRAM

0x82196c4 int SpriteSet_Load(SpriteSet * dest, SpriteSetHeader * src)
0x8219728 int Sprite_LoadSprite(Sprite * sprite, SpriteSet * set, uint spriteIndex)
0x82197a4 int Sprite_InitWithSprite(undefined4 sprite, SpriteSet * set, undefined4 spriteIndex, undefined4 param_4, undefined1 param_5, undefined1 param_6, undefined2 param_7, short * initialPosition)
0x821980c int Sprite_SetSprite(Sprite * sprite, SpriteSet * set, undefined2 index, undefined param_4)
0x821983c int Sprite_Create(Sprite * sprite, SpriteSet * set, int spriteId, uint param_4, undefined param_5, undefined param_6, undefined param_7, int * initialPosition)
0x8219aac undefined Actor_Boot(void)
0x8219b24 void Sys_ReadKeypad(void)
0x8219c00 uint rand_bootstrap(void)
0x8219c40 void * malloc(int bytes)
0x8219cb4 undefined malloc2(void)

TODO: How is this different from malloc?

0x8219d38 void free(void * mem)
0x8219db4 void memcpy(void * dest, void * source, uint len)
0x8219dd8 void bzero(void * mem, uint bytes)
0x8219ebc undefined memcpy_slow(void)
0x8219f50 undefined Actor_InitializeList(void)
0x8219f74 void Actor_Install(Actor * param_1)

Adds an actor to the actor list.

0x8219f94 void Actor_Uninstall(Actor * * param_1)

Removes an actor from the actor list.

0x8219fbc Actor * Actor_Create(byte type, undefined4 size)

Allocates an actor, and adds it to the actor list.

0x821a004 Actor * Actor_Create2(undefined1 type, undefined4 size)

Like Actor_Create, but uses malloc2 instead of malloc.

0x821a04c void Actor_SetCallbacks(Actor * object, ActionOfPtr * frame_cb, ActionOfPtr * destroy_cb)

Sets the "on_frame" and "on_destroy" callbacks of an actor.

0x821a054 void Actor_RunAll(void)

Runs the onFrame and onDestroy (as required) callbacks for all actors

0x821a0c0 int Actor_Delete(Actor * param_1)
0x821a520 void * Mft_GetFile(ushort dirId, undefined4 fileId)
0x821a66c int Script_ReadLength(byte * pc, int * length)

Returns pc after all the length bytes, the length itself is stored in *length.

0x821a6f0 byte * Script_GetValueCore(byte * pc, uint * param_2, int * out_value)
0x821a91c undefined Script_StoreVariable(void)
0x821a960 void Script_SetPc(byte * pc)
0x821a96c byte * Script_SeekToKeyword(char kw)
0x821aa00 int Script_GetValueAt(byte * pc)
0x821aa88 int Script_GetValueAtSafe(byte * param_1)
0x821aabc ushort Script_ParseStringRef(byte * pc)
0x821ab18 void * Script_GetPc(void)
0x821ab40 int Script_GetValue(void)
0x821ab88 int Script_GetValueSafe(void)
0x821aba8 int Script_GetKeywordValue(char kw, int fallback)
0x821acdc byte * Script_LookupById(int script_id, uint * param_2)
0x821ad08 int Script_ExecById(int script_id, int param_2)
0x821add4 char * Textbox_LookupString(int string_id)
0x821af2c int Script_ExecBlock(byte * pc, undefined4 param_2, undefined4 param_3)
0x821afd8 int Script_Exec(byte * pc, int param_2)
0x821b148 void Save_BackupStatAndWorld(void)
0x821b20c undefined Script_LoadPointer(byte * param_1, uint * param_2, int param_3, uint * param_4)
0x821b3e4 undefined Script_StorePointer(void)
0x821b938 undefined Script_RunOperator(void)
0x821ba5c int Script_RunExpression(byte * pc)
0x8225410 int Save_BackupStatAndWorld_Scripted(void)
0x82284f4 void Time_ClearData(void)
0x8228548 int Time_GetDaysInMonth(undefined4 year, undefined4 month)
0x822867c byte Time_GetDayOfWeek(undefined4 year, undefined4 month, undefined4 day)

This uses Zeller's congruence to compute the day of the week of a given date.

0x822874c uint Time_DateToBCD(int param_1, int param_2, int param_3)
0x8228c40 int Time_Set(int year, int month, int day, byte hours, undefined1 minutes, byte seconds, undefined4 writeToRtcChip)
0x8228d7c undefined Time_GetRtcDate(void)
0x8228d88 undefined Time_GetRtcHours(void)
0x8228d94 undefined Time_GetRtcMinutes(void)
0x8229180 int Time_WriteToRtcChip(undefined4 year, undefined4 month, undefined4 date, undefined1 hours, undefined1 minutes, undefined1 seconds)
0x822a7a8 undefined Time_CalculateSunriseSunset'(undefined4 param_1, undefined4 param_2, undefined4 param_3, undefined4 param_4, undefined4 param_5, undefined4 param_6, undefined4 param_7, undefined4 tz_offset)
0x822ae00 undefined Time_CalculateSunriseSunset(void)
0x822b2f8 undefined Sound_Play(void)
0x822c238 undefined Sensor_GetBars(void)
0x822fe60 undefined MP2K_SoundInit(void)
0x822fed8 undefined MP2K_SoundMain(void)
0x822fee4 void MP2K_SongNumStart(int param_1)
0x82305cc undefined MP2K_SoundVSync(void)
0x8243d28 void Sensor_Timer3Handler(void)
0x8248590 void Mem_CpuFastSet(void * source, void * destination, uint count)
0x8248594 void Mem_CpuSet(void * source, void * destination, uint count)
0x8248598 int Math_Div(int dividend, int divisor)
0x824859c int Math_Mod(int dividend, int divisor)
0x82485a4 int Math_ModArm(int divisor, undefined4 dividend)
0x82485ac undefined Sys_LZ77Uncomp8Bit(void * src, void * dest)
0x82485b0 undefined Sys_RegisterRamReset(int resetFlags)
0x82485b4 void Sys_SoftReset(int param_1)
0x82485d0 void Sys_SoundBiasLow(void)
0x82485d8 void Sys_SoundBiasHigh(void)
0x82485e0 int Math_Sqrt(int x)
0x82485e4 void Sys_VBlankIntrWait(void)
0x8248970 void GPIO_EnableClearFlag(void)
0x8248988 void GPIO_DisableSetFlag(void)
0x8249210 void GPIO_Enable(void)
0x8249224 void GPIO_Disable(void)
0x824923c undefined4 CallParam2(void * arg, ActionOfPtr * fn)
0x824da48 void * memcpy'(void * dest, void * src, uint len)

How is this different from memcpy?

0x826456c MP2K_SongTable (1483 entries)
0x860330c Engine call table (null-terminated array of struct { void(*)(int r0) fn; int id; })
0x8614d6c Master file table