Missing symbols
BenoitRen edited this page 8 months ago

While the majority of symbols is present in the DWARF debug data, it's incomplete.

Structs

The majority of structs were anonymous. This means that they were defined without a tag, and used through type names, which are not part of the symbol table.

The following type names were made up for tagless structs:

  • short_chars
  • int_shorts
  • int_chars
  • ushort_uchars
  • uint_ushorts
  • uint_uchars
  • sprite_data
  • sprite_pattern
  • game_info
  • time_data
  • score_data
  • sprite_status
  • sprite_statuses
  • aset_info
  • asetz_info
  • bmp_info
  • edit_info
  • edit_info_array
  • map_info
  • palette_part
  • sprite_patterns_sp
  • sprite_status_sp
  • damage_info
  • hane_info
  • zoom_info
  • move_tbl
  • bwrt_info
  • tile_changes
  • tile_change_data

tagPALETTEENTRY and tagPOINT had their tag saved, but not their name. These are actually from the Windows API, and their default names as defined in the headers are PALETTEENTRY and POINT, respectively.

Unions

All unions were anonymous. This means that they were defined without a tag, and used through type names, which are not part of the symbol table.

The following type names were made up:

  • short_union
  • int_union
  • ushort_union
  • uint_union

Parameters

Unused parameters are not added to the symbol table. However, they did affect the stack during compilation, which is how we can tell that they were present.

BIGBOM8::m_move1

This function is empty, so its parameter was unused. From the stack size and sister functions it can be deduced that the missing parameter is sprite_status* pActwk.

BIGBOM8::m_move4

This function is empty, so its parameter was unused. From the stack size and sister functions it can be deduced that the missing parameter is sprite_status* pActwk.

BOSS_5::door_open

This function's parameter is unused. However, BOSS_5::egg6_dead2 calls it with a sprite_status pointer. From this it can be deduced that the missing parameter is sprite_status* pActwk.

BOSS_7::egg7beam_ini

This function's second parameter is unused. However, it is part of the object table created in BOSS_7::egg7beam, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* a2.

BOSS_7::egg7beam_kemuri2

This function's second parameter is unused. However, it is part of the object table created in BOSS_7::egg7beam, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* a2.

BOSS_8::egg8_ini

This function's second parameter is unused. However, it is part of the object table egg8_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pMecawk.

BOSS_8::egg8_wait

This function's second parameter is unused. However, it is part of the object table egg8_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pMecawk.

BOSS_8::egg8_move_r

This function's second parameter is unused. However, it is part of the object table egg8_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pMecawk.

BOSS_8::egg8_move_l

This function's second parameter is unused. However, it is part of the object table egg8_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pMecawk.

BOSS_8::egg8_move_d

This function's second parameter is unused. However, it is part of the object table egg8_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pMecawk.

BOSS_8::egg8_move_u

This function's second parameter is unused. However, it is part of the object table egg8_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pMecawk.

BOSS_8::egg8_move_c

This function's second parameter is unused. However, it is part of the object table egg8_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pMecawk.

BOSS_8::egg8_tobi_u

This function's second parameter is unused. However, it is part of the object table egg8_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pMecawk.

BOSS_8::egg8_esc

This function's second parameter is unused. However, it is part of the object table egg8_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pMecawk.

BOSS_8::egg8_esc2

This function's second parameter is unused. However, it is part of the object table egg8_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pMecawk.

BOSS_8::egg8meca_ini

This function's second parameter is unused. However, it is part of the object table meca_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pEggwk.

BOSS_8::egg8meca_chg1

This function's second parameter is unused. However, it is part of the object table meca_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pEggwk.

BOSS_8::egg8meca_chg2

This function's second parameter is unused. However, it is part of the object table meca_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pEggwk.

BOSS_8::egg8hane_normal

This function's third parameter is unused. However, it is part of the object table hane_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pEggwk.

BOSS_8::egg8hane_wait

This function's third parameter is unused. However, it is part of the object table hane_act_tbl, and by looking at the other functions it can be deduced that the missing parameter is sprite_status* pEggwk.

BOSS_8::egg8hane_kill

This function's second and third parameters are unused. However, it is part of the object table hane_act_tbl, and by looking at the other functions it can be deduced that the missing parameters are sprite_status* pMecawk and sprite_status* pEggwk.

COLI4::pcolspecial

This has three unused parameters. However, COLI4::ColliHitChk calls it. As it's passing in the same arguments as the function's own parameters, the types and names can be deduced to be short iXposi, short iChkPosi, and short iD5.

COLI5::pcolspecial

This has three unused parameters. However, COLI5::ColliHitChk calls it. As it's passing in the same arguments as the function's own parameters, the types and names can be deduced to be short iXposi, short iChkPosi, and short iD5.

COLI7::pcolspecial

This has three unused parameters. However, COLI7::ColliHitChk calls it. As it's passing in the same arguments as the function's own parameters, the types and names can be deduced to be short iXposi, short iChkPosi, and short iD5.

COLI8::pcolspecial

This has three unused parameters. However, COLI8::ColliHitChk calls it. As it's passing in the same arguments as the function's own parameters, the types and names can be deduced to be short iXposi, short iChkPosi, and short iD5.

DAI_RD5::type06_02

This function is empty, so its parameter was unused. From the stack size and sister functions it can be deduced that the missing parameter is sprite_status* pActwk.

DLLMAIN::LibMain

This old Windows 3.1 function was stubbed, so all of its parameters are unused. Old documentation contained the expected function signature: LibMain(void* hInstance, unsigned short wDataSeg, unsigned short wHeapSize, char* lpsxCmdLine.

DLLMAIN::WEP

This old Windows 3.1 function was stubbed, so its parameter is unused. Old documentation contained the expected function signature: WEP(int nParameter).

ENEMY::ene_tama

This function is empty, so its parameter was unused. From the stack size and sister functions it can be deduced that the missing parameter is sprite_status* pActwk.

GAITOU73::get_x

This function's parameter is unused. However, GAITOU73::gaitou73_01 calls it. From this it can be deduced that the missing parameter is sprite_status* pActwk.

GAME::SetUseOk

This function was stubbed, so its parameters are unused. Apart from the stack size, the only information remaining is that other code calls it with three numbers. As a result, a placeholder parameter list is used: short unknown1, short unknown2, short unknown3.

PLAYSUB4::bou_move2

This function is empty, so its parameter was unused. From the stack size and sister functions it can be deduced that the missing parameter is sprite_status* pActwk.

UDBLK4::udblk4_type2

This function is empty, so its parameter was unused. From the stack size and sister functions it can be deduced that the missing parameter is sprite_status* pActwk.

ASCIISET::ascchg

This function was stubbed, so its parameter is unused. However, it is part of the object table created in ASCIISET::sprascii, where the function parameter is defined as sprite_status_lpl*.

ASCIISET::ascspr_chk

This function's second parameter is unused. However, it is part of the object table created in ASCIISET::ascii_sprite, and by looking at the other functions it can be deduced that the missing parameter is sprite_status_lpl* pAscwk.

ASCIISET::ascspr_set

This function's second parameter is unused. However, it is part of the object table created in ASCIISET::ascii_sprite, and by looking at the other functions it can be deduced that the missing parameter is sprite_status_lpl* pAscwk.

AVIOPNDO::AVIPaint

This function was stubbed, so its parameter is unused. However, AVIOPNEN::DLLPaint calls it with unsigned int hdc.

AVIOPNEN::DLLNotify

This function was stubbed, so its parameters are unused. It is not called.

AVIOPNDO::ReadDIB

This function was stubbed, so its parameter is unused. However, AVIOPNEN::DLLInit calls it with char fileName[27]. The parameter was restored as char* fileName.

BESTGRID::OEGridCreate

This function was stubbed, so its parameter is unused. However, this function is not stubbed in other parts of the code, from which the parameter, unsigned short indx, could be recovered.

BESTGRID::OEGridDelete

This function was stubbed, so its parameter is unused. However, this function is not stubbed in other parts of the code, from which the parameter, unsigned short indx, could be recovered.

HMX_OEEACTL::EAError

This function was stubbed, so its parameters are unused. However, this function is not stubbed in TA, from which the parameters could be recovered: int ret, int line, char* str.

HMX_OEEACTL::ld_bitmap_file2

This has two unused parameters. However, SOUNDTST::SNDDO calls it. From this call, and the names of the other parameters, it can be deduced that the missing parameters are int sy and int dy.

SNDGRID::OEGridCreate

This function was stubbed, so its parameter is unused. However, this function is not stubbed in other parts of the code, from which the parameter, unsigned short indx, could be recovered.

SNDGRID::OEGridDelete

This function was stubbed, so its parameter is unused. However, this function is not stubbed in other parts of the code, from which the parameter, unsigned short indx, could be recovered.

STGGRID::OEGridCreate

This function was stubbed, so its parameter is unused. However, this function is not stubbed in other parts of the code, from which the parameter, unsigned short indx, could be recovered.

STGGRID::OEGridDelete

This function was stubbed, so its parameter was unused. However, this function is not stubbed in other parts of the code, from which the parameter, unsigned short indx, could be recovered.

TACOLOR::TAColorSet

This function's parameter is not used. However, TA::game_init calls it with a constant number. From the stack size it can be deduced that the parameter is an int, but the name is unknown.

Labels

Labels are not added to the symbol table. They've been made up using non-descriptive names like label1, label2,...