Sonic and Sega Retro Message Board: Sonic & Knuckles Collection labels - Sonic and Sega Retro Message Board

Jump to content

Hey there, Guest!  (Log In · Register) Help
Page 1 of 1
    Locked
    Locked Forum

Sonic & Knuckles Collection labels data tying labels to addresses, unsure how to properly parse

#1 User is offline MainMemory 

Posted 27 September 2011 - 10:13 PM

  • Every day's the same old thing... Same place, different day...
  • Posts: 3207
  • Joined: 14-August 09
  • Gender:Not Telling
  • Project:SonLVL
  • Wiki edits:1,339
You may know that Sonic & Knuckles Collection contains the original labels in the EXE file. You may also know that I have started a disassembly on the SVN. Of course, these labels are included in the disassembly, in a separate segment of the EXE not referenced by anything in the main code segment.

I found the labels use what IDA calls "Pascal style" strings, with a length byte before the string. At the end of the labels, there's more data which includes pointers to various locations in the game's code and data:
seg004:008800AC aRingact050_3   db 12,'ringact050_3'
seg004:008800B9 aRingact051_3   db 12,'ringact051_3'
seg004:008800C6                 dw 2
seg004:008800C8                 dd 40000h
seg004:008800CC                 dd 3050001h
seg004:008800D0                 dd 2130011h
seg004:008800D4                 dd offset Obj_SOZ_Ghosts
seg004:008800D8                 dw 0
seg004:008800DA                 db 0
seg004:008800DB                 dd 1
seg004:008800DF                 dd 0
seg004:008800E3                 dd 2090011h
seg004:008800E7                 dd offset loc_6EBCE1
... continues for a long time ...

If you look, the first label in the list is "gost08", which matches the first pointer, a Ghost in Zone 08 (Sandopolis Zone). However, the data structures seem to change size, and I have no idea what means what other than where the pointers are.

#2 User is offline LOst 

Posted 08 October 2011 - 03:49 PM

  • Sonic 2 HD - Lead Programmer
  • Posts: 4877
  • Joined: 10-January 03
  • Gender:Male
  • Wiki edits:2

View PostMainMemory, on 27 September 2011 - 10:13 PM, said:

You may know that Sonic & Knuckles Collection contains the original labels in the EXE file. You may also know that I have started a disassembly on the SVN. Of course, these labels are included in the disassembly, in a separate segment of the EXE not referenced by anything in the main code segment.

I found the labels use what IDA calls "Pascal style" strings, with a length byte before the string. At the end of the labels, there's more data which includes pointers to various locations in the game's code and data:
seg004:008800AC aRingact050_3   db 12,'ringact050_3'
seg004:008800B9 aRingact051_3   db 12,'ringact051_3'
seg004:008800C6                 dw 2
seg004:008800C8                 dd 40000h
seg004:008800CC                 dd 3050001h
seg004:008800D0                 dd 2130011h
seg004:008800D4                 dd offset Obj_SOZ_Ghosts
seg004:008800D8                 dw 0
seg004:008800DA                 db 0
seg004:008800DB                 dd 1
seg004:008800DF                 dd 0
seg004:008800E3                 dd 2090011h
seg004:008800E7                 dd offset loc_6EBCE1
... continues for a long time ...

If you look, the first label in the list is "gost08", which matches the first pointer, a Ghost in Zone 08 (Sandopolis Zone). However, the data structures seem to change size, and I have no idea what means what other than where the pointers are.

Oh, I have been there before. And failed so many times. What I mean is, I have never been able to go past one label in S&KC.

So you found addresses? I wish I had found them as well, because all I found was labels and their character count.

I surly would love to have the labels mapped correctly, as that would help singling out the programmer of each object.

Well, it doesn't do any harm to have a look at those offsets *goes to look*

EDIT:
They sure look like a label to address match! I can't believe I didn't figure this out years ago. But it is now we need these more than ever, so I'll continue to investigate:
Posted Image
This post has been edited by LOst: 08 October 2011 - 04:56 PM

#3 User is offline MainMemory 

Posted 08 October 2011 - 06:34 PM

  • Every day's the same old thing... Same place, different day...
  • Posts: 3207
  • Joined: 14-August 09
  • Gender:Not Telling
  • Project:SonLVL
  • Wiki edits:1,339
That struct works... until you get to 8805E5, which also changes some of those values which have been constant until that point.
This post has been edited by MainMemory: 08 October 2011 - 06:35 PM

#4 User is offline LOst 

Posted 08 October 2011 - 08:03 PM

  • Sonic 2 HD - Lead Programmer
  • Posts: 4877
  • Joined: 10-January 03
  • Gender:Male
  • Wiki edits:2
Real names, taken from the S&K object list in S&KC PC:
.text:0044F790 dd offset gost08
.text:0044F794 dd offset setcg
.text:0044F798 dd offset obox08



My own Genesis S&K disassembly with pretended names:
ROM:000952A2                 dc.l ObjZeGhosts_SPZ2   ; $AA
ROM:000952A2                 dc.l ObjParamEventGhostCapsuleArtLoader_SPZ2; $AB
ROM:000952A2                 dc.l ObjZeExGhostsEggCapsule_SPZ2; $AC



The debug symbols have a format I don't understand. I use a container struct that begins with an Index. As long as the index was increasing, it was easy to rename addresses to functions and data tables. In the container struct I placed a struct called 11h_213h:
seg004:008800C8 DebugContainer0 <0, <4, 1, 305h, 11h, 213h, offset gost08, 0>, 0>
...
seg004:008801D2 DebugContainer1 <0Eh, <0, 0, 0, 11h, 213h, offset setcg, 0>, 0>
...
seg004:00880231 DebugContainer0 <13h, <0, 0, 0, 11h, 213h, offset obox08, 0>, 0>



Then we have the container with a struct called 11h_209h:
seg004:008800DB DebugContainer1 <1, <0, 0, 0, 11h, 209h, offset gost08_ctr, 0>, 0>



It is when we get to the container with more than one struct in them that it gets complicated. The indexes of the container do not increment anymore, and contain 2 different sized structures I call 18h_207h, and one 11h_209h struct:
seg004:008805E7 DebugContainer2sh_2_1 <45h, <0, 0, 0, 18h, 207h, 0, 0, 0, 0, 29h, 0, offset gost08>, <0, 0, 0, 2, 6, 18h, 207h, 0, 0, 0, 0, 0CEh, 0, offset gost08_ctr>, <0, 0, 0, 11h, 209h, offset @@100, 0>, 0>


I don't know what the different struct types mean, other than the common numbers used. And I can't find any debug symbol format using this kind of data.

#5 User is offline LOst 

Posted 09 October 2011 - 08:45 AM

  • Sonic 2 HD - Lead Programmer
  • Posts: 4877
  • Joined: 10-January 03
  • Gender:Male
  • Wiki edits:2
I am happy because I was able to match the most important enemy and boss script functions labels to their subroutines:
seg004:0088114B DebugContainer0 <1, <0, 0, 0, 11h, 213h, offset set_act04, 0>, 0>
seg004:0088115E DebugContainer0 <2, <0, 0, 0, 11h, 213h, offset set_act05, 0>, 0>
seg004:00881171 DebugContainer0 <3, <0, 0, 0, 11h, 213h, offset set_act06, 0>, 0>
seg004:00881184 DebugContainer0 <4, <0, 0, 0, 11h, 213h, offset set_act07, 0>, 0>
seg004:00881197 DebugContainer0 <5, <0, 0, 0, 11h, 213h, offset set_act08, 0>, 0>
seg004:008811AA DebugContainer0 <6, <0, 0, 0, 11h, 213h, offset set_act09, 0>, 0>
seg004:008811BD DebugContainer0 <7, <0, 0, 0, 11h, 213h, offset pt_chgs, 0>, 0>
seg004:008811D0 DebugContainer0 <8, <0, 0, 0, 11h, 213h, offset pt_chgs0, 0>, 0>
seg004:008811E3 DebugContainer0 <9, <0, 0, 0, 11h, 213h, offset time_pg, 0>, 0>
seg004:008811F6 DebugContainer0 <0Ah, <0, 0, 0, 11h, 213h, offset time_pg0, 0>, 0>
seg004:00881209 DebugContainer0 <0Bh, <0, 0, 0, 11h, 209h, offset chk_tpg_next, 0>, 0>
seg004:0088121C DebugContainer0 <0Ch, <0, 0, 0, 11h, 213h, offset time_pgr, 0>, 0>
seg004:0088122F DebugContainer0 <0Dh, <0, 0, 0, 11h, 213h, offset time_pgr0, 0>, 0>
seg004:00881242 DebugContainer0 <0Eh, <0, 0, 0, 11h, 213h, offset time_pgvr, 0>, 0>
seg004:00881255 DebugContainer0 <0Fh, <0, 0, 0, 11h, 213h, offset time_pgvr0, 0>, 0>
seg004:00881268 DebugContainer0 <10h, <0, 0, 0, 11h, 213h, offset time_pgs, 0>, 0>
seg004:0088127B DebugContainer0 <11h, <0, 0, 0, 11h, 213h, offset time_pgs0, 0>, 0>
seg004:0088128E DebugContainer0 <12h, <0, 0, 0, 11h, 213h, offset pg_get_fast, 0>, 0>
seg004:008812A1 DebugContainer0 <13h, <0, 0, 0, 11h, 213h, offset pg_get_fast0, 0>, 0>
seg004:008812B4 DebugContainer0 <14h, <0, 0, 0, 11h, 213h, offset pg_get_slow, 0>, 0>
seg004:008812C7 DebugContainer0 <15h, <0, 0, 0, 11h, 213h, offset pg_get_slow0, 0>, 0>
seg004:008812DA DebugContainer0 <16h, <0, 0, 0, 11h, 213h, offset puka_count, 0>, 0>
seg004:008812ED DebugContainer0 <17h, <0, 0, 0, 11h, 213h, offset dec_timer, 0>, 0>
seg004:00881300 DebugContainer0 <18h, <0, 0, 0, 11h, 213h, offset emy_fall_col, 0>, 0>
seg004:00881313 DebugContainer0 <19h, <0, 0, 0, 11h, 213h, offset emy_down_col, 0>, 0>
seg004:00881326 DebugContainer0 <1Ah, <0, 0, 0, 11h, 213h, offset emy_right_col, 0>, \
seg004:00881326                  0>
seg004:00881339 DebugContainer0 <1Bh, <0, 0, 0, 11h, 213h, offset emy_left_col, 0>, 0>
seg004:0088134C DebugContainer0 <1Ch, <0, 0, 0, 11h, 213h, offset chk_actsubc, 0>, 0>
seg004:0088135F DebugContainer0 <1Dh, <0, 0, 0, 11h, 213h, offset chk_oya_die0, 0>, 0>
seg004:00881372 DebugContainer0 <1Eh, <0, 0, 0, 11h, 213h, offset chk_oya_diec0, 0>, \
seg004:00881372                  0>
seg004:00881385 DebugContainer0 <1Fh, <0, 0, 0, 11h, 213h, offset chk_oya_dien0, 0>, \
seg004:00881385                  0>
seg004:00881398 DebugContainer0 <20h, <0, 0, 0, 11h, 213h, offset chk_oya_dienc0, 0>, \
seg004:00881398                  0>
seg004:008813AB DebugContainer0 <21h, <0, 0, 0, 11h, 213h, offset chk_oya_diew0, 0>, \
seg004:008813AB                  0>
seg004:008813BE DebugContainer0 <22h, <0, 0, 0, 11h, 213h, offset chk_oya_die1, 0>, 0>
seg004:008813D1 DebugContainer0 <23h, <0, 0, 0, 11h, 213h, offset chk_oya_diec1, 0>, \
seg004:008813D1                  0>
seg004:008813E4 DebugContainer0 <24h, <0, 0, 0, 11h, 213h, offset chk_tobi_die0, 0>, \
seg004:008813E4                  0>
seg004:008813F7 DebugContainer0 <25h, <0, 0, 0, 11h, 213h, offset set_emy_tobi, 0>, 0>
seg004:0088140A DebugContainer0 <26h, <0, 0, 0, 11h, 213h, offset chk_tobi_die1, 0>, \
seg004:0088140A                  0>
seg004:0088141D DebugContainer0 <27h, <0, 0, 0, 11h, 213h, offset chk_tobi_diec0, 0>, \
seg004:0088141D                  0>
seg004:00881430 DebugContainer0 <28h, <0, 0, 0, 11h, 213h, offset chk_tobi_diec1, 0>, \
seg004:00881430                  0>
seg004:00881443 DebugContainer0 <29h, <0, 0, 0, 11h, 213h, offset chg_scr_lim_r, 0>, \
seg004:00881443                  0>
seg004:00881456 DebugContainer0 <2Ah, <0, 0, 0, 11h, 209h, offset emy_frameout, 0>, 0>
seg004:00881469 DebugContainer0 <2Bh, <0, 0, 0, 11h, 213h, offset chg_scr_lim_l, 0>, \
seg004:00881469                  0>
seg004:0088147C DebugContainer0 <2Ch, <0, 0, 0, 11h, 213h, offset chg_scr_lim_u, 0>, \
seg004:0088147C                  0>
seg004:0088148F DebugContainer0 <2Dh, <0, 0, 0, 11h, 213h, offset chg_scr_lim_d, 0>, \
seg004:0088148F                  0>
seg004:008814A2 DebugContainer0 <2Eh, <0, 0, 0, 11h, 213h, offset chglimr_set_tbl, 0>,\
seg004:008814A2                  0>
seg004:008814B5 DebugContainer0 <2Fh, <0, 0, 0, 11h, 213h, offset chgliml_set_tbl, 0>,\
seg004:008814B5                  0>
seg004:008814C8 DebugContainer0 <30h, <0, 0, 0, 11h, 213h, offset chglimu_set_tbl, 0>,\
seg004:008814C8                  0>
seg004:008814DB DebugContainer0 <31h, <0, 0, 0, 11h, 213h, offset chglimd_set_tbl, 0>,\
seg004:008814DB                  0>
seg004:008814EE DebugContainer0 <32h, <0, 0, 0, 11h, 213h, offset chk_distance, 0>, 0>
seg004:00881501 DebugContainer0 <33h, <0, 0, 0, 11h, 213h, offset chk_emy_rev, 0>, 0>
seg004:00881514 DebugContainer0 <34h, <0, 0, 0, 11h, 213h, offset chk_emy_revs, 0>, 0>
seg004:00881527 DebugContainer0 <35h, <0, 0, 0, 11h, 213h, offset chk_oya_rev, 0>, 0>
seg004:0088153A DebugContainer0 <36h, <0, 0, 0, 11h, 213h, offset chk_distance0, 0>, \
seg004:0088153A                  0>
seg004:0088154D DebugContainer0 <37h, <0, 0, 0, 11h, 213h, offset speedsetg20, 0>, 0>
seg004:00881560 DebugContainer0 <38h, <0, 0, 0, 11h, 213h, offset speedsetg, 0>, 0>
seg004:00881573 DebugContainer0 <39h, <0, 0, 0, 11h, 213h, offset speedseta1, 0>, 0>
seg004:00881586 DebugContainer0 <3Ah, <0, 0, 0, 11h, 213h, offset speedseta1g, 0>, 0>
seg004:00881599 DebugContainer0 <3Bh, <0, 0, 0, 11h, 213h, offset circle_radius, 0>, \
seg004:00881599                  0>
seg004:008815AC DebugContainer0 <3Ch, <0, 0, 0, 11h, 213h, offset circle_move, 0>, 0>
seg004:008815BF DebugContainer0 <3Dh, <0, 0, 0, 11h, 213h, offset circle_mover, 0>, 0>
seg004:008815D2 DebugContainer0 <3Eh, <0, 0, 0, 11h, 213h, offset circle_moveo, 0>, 0>
seg004:008815E5 DebugContainer0 <3Fh, <0, 0, 0, 11h, 213h, offset circle_movet, 0>, 0>
seg004:008815F8 DebugContainer0 <40h, <0, 0, 0, 11h, 209h, offset movet_tb, 0>, 0>
seg004:0088160B DebugContainer0 <41h, <0, 0, 0, 11h, 213h, offset circle_moveto, 0>, \
seg004:0088160B                  0>
seg004:0088161E DebugContainer0 <42h, <0, 0, 0, 11h, 213h, offset sin_movety, 0>, 0>
seg004:00881631 DebugContainer0 <43h, <0, 0, 0, 11h, 213h, offset sin_movex, 0>, 0>
seg004:00881644 DebugContainer0 <44h, <0, 0, 0, 11h, 213h, offset sin_movey, 0>, 0>
seg004:00881657 DebugContainer0 <45h, <0, 0, 0, 11h, 213h, offset time_fout, 0>, 0>
seg004:0088166A DebugContainer0 <46h, <0, 0, 0, 11h, 213h, offset time_fouts, 0>, 0>
seg004:0088167D DebugContainer0 <47h, <0, 0, 0, 11h, 213h, offset time_fouts2, 0>, 0>
seg004:00881690 DebugContainer0 <48h, <0, 0, 0, 11h, 213h, offset time_foutsg20, 0>, \
seg004:00881690                  0>
seg004:008816A3 DebugContainer0 <49h, <0, 0, 0, 11h, 213h, offset bs_time_fout, 0>, 0>
seg004:008816B6 DebugContainer0 <4Ah, <0, 0, 0, 11h, 213h, offset boss_flash, 0>, 0>
seg004:008816C9 DebugContainer0 <4Bh, <0, 0, 0, 11h, 213h, offset emy_wrt_init, 0>, 0>
seg004:008816DC DebugContainer0 <4Ch, <0, 0, 0, 11h, 213h, offset set_emy_wchg, 0>, 0>
seg004:008816EF DebugContainer0 <4Dh, <0, 0, 0, 11h, 213h, offset chk_emy_fout0, 0>, \
seg004:008816EF                  0>
seg004:00881702 DebugContainer0 <4Eh, <0, 0, 0, 11h, 213h, offset emy_fout, 0>, 0>
seg004:00881715 DebugContainer0 <4Fh, <0, 0, 0, 11h, 213h, offset chk_emy_fout1, 0>, \
seg004:00881715                  0>
seg004:00881728 DebugContainer0 <50h, <0, 0, 0, 11h, 213h, offset emy_fout1, 0>, 0>
seg004:0088173B DebugContainer0 <51h, <0, 0, 0, 11h, 213h, offset chk_emy_fout3, 0>, \
seg004:0088173B                  0>
seg004:0088174E DebugContainer0 <52h, <0, 0, 0, 11h, 213h, offset chk_break_fout, 0>, \
seg004:0088174E                  0>
seg004:00881761 DebugContainer0 <53h, <0, 0, 0, 11h, 213h, offset chk_emy_foutc0, 0>, \
seg004:00881761                  0>
seg004:00881774 DebugContainer0 <54h, <0, 0, 0, 11h, 213h, offset chk_emy_foutc1, 0>, \
seg004:00881774                  0>
seg004:00881787 DebugContainer0 <55h, <0, 0, 0, 11h, 213h, offset chk_emy_foutc3, 0>, \
seg004:00881787                  0>
seg004:0088179A DebugContainer0 <56h, <0, 0, 0, 11h, 213h, offset chk_emy_foutw0, 0>, \
seg004:0088179A                  0>
seg004:008817AD DebugContainer0 <57h, <0, 0, 0, 11h, 213h, offset wchg_fout, 0>, 0>
seg004:008817C0 DebugContainer0 <58h, <0, 0, 0, 11h, 213h, offset set_wchg_fout0, 0>, \
seg004:008817C0                  0>
seg004:008817D3 DebugContainer0 <59h, <0, 0, 0, 11h, 213h, offset clr_wchg_bit, 0>, 0>
seg004:008817E6 DebugContainer0 <5Ah, <0, 0, 0, 11h, 213h, offset chk_emy_foutw1, 0>, \
seg004:008817E6                  0>
seg004:008817F9 DebugContainer0 <5Bh, <0, 0, 0, 11h, 213h, offset chk_emy_foutwc0, 0>,\
seg004:008817F9                  0>
seg004:0088180C DebugContainer0 <5Ch, <0, 0, 0, 11h, 213h, offset wchg_die, 0>, 0>
seg004:0088181F DebugContainer0 <5Dh, <0, 0, 0, 11h, 213h, offset chk_emy_foutwc1, 0>,\
seg004:0088181F                  0>
seg004:00881832 DebugContainer0 <5Eh, <0, 0, 0, 11h, 213h, offset chk_emy_foutn0, 0>, \
seg004:00881832                  0>
seg004:00881845 DebugContainer0 <5Fh, <0, 0, 0, 11h, 213h, offset chk_emy_foutn1, 0>, \
seg004:00881845                  0>
seg004:00881858 DebugContainer0 <60h, <0, 0, 0, 11h, 213h, offset chk_emy_foutnc0, 0>,\
seg004:00881858                  0>
seg004:0088186B DebugContainer0 <61h, <0, 0, 0, 11h, 213h, offset set_emy_fout0, 0>, \
seg004:0088186B                  0>
seg004:0088187E DebugContainer0 <62h, <0, 0, 0, 11h, 213h, offset set_emy_fout1, 0>, \
seg004:0088187E                  0>
seg004:00881891 DebugContainer0 <63h, <0, 0, 0, 11h, 209h, offset set_emy_fout01, 0>, \
seg004:00881891                  0>
seg004:008818A4 DebugContainer0 <64h, <0, 0, 0, 11h, 213h, offset set_break_spd, 0>, \
seg004:008818A4                  0>
seg004:008818B7 DebugContainer0 <65h, <0, 0, 0, 11h, 213h, offset set_break_spd0, 0>, \
seg004:008818B7                  0>
seg004:008818CA DebugContainer0 <66h, <0, 0, 0, 11h, 213h, offset make_dir, 0>, 0>
seg004:008818DD DebugContainer0 <67h, <0, 0, 0, 11h, 213h, offset set_init_spd, 0>, 0>
seg004:008818F0 DebugContainer0 <68h, <0, 0, 0, 11h, 213h, offset get_closer, 0>, 0>
seg004:00881903 DebugContainer0 <69h, <0, 0, 0, 11h, 213h, offset get_closer_x, 0>, 0>
seg004:00881916 DebugContainer0 <6Ah, <0, 0, 0, 11h, 213h, offset get_closer_y, 0>, 0>
seg004:00881929 DebugContainer0 <6Bh, <0, 0, 0, 11h, 213h, offset get_closer_o, 0>, 0>
seg004:0088193C DebugContainer0 <6Ch, <0, 0, 0, 11h, 213h, offset fadeout_act, 0>, 0>
seg004:0088194F DebugContainer0 <6Dh, <0, 0, 0, 11h, 213h, offset fadeout_1cor, 0>, 0>
seg004:00881962 DebugContainer0 <6Eh, <0, 0, 0, 11h, 213h, offset fadein_act, 0>, 0>
seg004:00881975 DebugContainer0 <6Fh, <0, 0, 0, 11h, 213h, offset fadein_1cor, 0>, 0>
seg004:00881988 DebugContainer0 <70h, <0, 0, 0, 11h, 213h, offset spd_pt_chg, 0>, 0>
seg004:0088199B DebugContainer0 <71h, <0, 0, 0, 11h, 213h, offset spd2_pt_chg, 0>, 0>
seg004:008819AE DebugContainer0 <72h, <0, 0, 0, 11h, 213h, offset spdg20_pt_chg, 0>, \
seg004:008819AE                  0>
seg004:008819C1 DebugContainer0 <73h, <0, 0, 0, 11h, 213h, offset pk_spd2_pt_tim, 0>, \
seg004:008819C1                  0>
seg004:008819D4 DebugContainer0 <74h, <0, 0, 0, 11h, 213h, offset spd2_pt_tim, 0>, 0>
seg004:008819E7 DebugContainer0 <75h, <0, 0, 0, 11h, 213h, offset pt_tim, 0>, 0>
seg004:008819FA DebugContainer0 <76h, <0, 0, 0, 11h, 213h, offset ko0_tim_act, 0>, 0>
seg004:00881A0D DebugContainer0 <77h, <0, 0, 0, 11h, 213h, offset tim_act, 0>, 0>
seg004:00881A20 DebugContainer0 <78h, <0, 0, 0, 11h, 213h, offset bos_tim_act, 0>, 0>
seg004:00881A33 DebugContainer0 <79h, <0, 0, 0, 11h, 213h, offset bos_tim_act0, 0>, 0>
seg004:00881A46 DebugContainer0 <7Ah, <0, 0, 0, 11h, 213h, offset spd2_tim_actc, 0>, \
seg004:00881A46                  0>
seg004:00881A59 DebugContainer0 <7Bh, <0, 0, 0, 11h, 213h, offset ko0_tpg_actc, 0>, 0>
seg004:00881A6C DebugContainer0 <7Ch, <0, 0, 0, 11h, 213h, offset tim_tpg, 0>, 0>
seg004:00881A7F DebugContainer0 <7Dh, <0, 0, 0, 11h, 213h, offset pg_spd_fout3, 0>, 0>
seg004:00881A92 DebugContainer0 <7Eh, <0, 0, 0, 11h, 213h, offset spd_fout3, 0>, 0>
seg004:00881AA5 DebugContainer0 <7Fh, <0, 0, 0, 11h, 213h, offset pg_spd_foutc3, 0>, \
seg004:00881AA5                  0>
seg004:00881AB8 DebugContainer0 <80h, <0, 0, 0, 11h, 213h, offset spd_foutc3, 0>, 0>
seg004:00881ACB DebugContainer0 <81h, <0, 0, 0, 11h, 213h, offset spd2_tim, 0>, 0>
seg004:00881ADE DebugContainer0 <82h, <0, 0, 0, 11h, 213h, offset pk_spd2_tim, 0>, 0>
seg004:00881AF1 DebugContainer0 <83h, <0, 0, 0, 11h, 213h, offset pt_actc, 0>, 0>
seg004:00881B04 DebugContainer0 <84h, <0, 0, 0, 11h, 213h, offset pt_act, 0>, 0>
seg004:00881B17 DebugContainer0 <85h, <0, 0, 0, 11h, 209h, offset spd2_pt_tim_act, 0>,\
seg004:00881B17                  0>
seg004:00881B2A DebugContainer0 <86h, <0, 0, 0, 11h, 213h, offset pt_tim_actc, 0>, 0>
seg004:00881B3D DebugContainer0 <87h, <0, 0, 0, 11h, 213h, offset set_emy_die, 0>, 0>
seg004:00881B50 DebugContainer0 <88h, <0, 0, 0, 11h, 213h, offset set_emy_die1, 0>, 0>
seg004:00881B63 DebugContainer0 <89h, <0, 0, 0, 11h, 213h, offset set_emy_die0, 0>, 0>
seg004:00881B76 DebugContainer0 <8Ah, <0, 0, 0, 11h, 213h, offset set_pl_damage, 0>, \
seg004:00881B76                  0>
seg004:00881B89 DebugContainer0 <8Bh, <0, 0, 0, 11h, 213h, offset chk_gacha_gacha, 0>,\
seg004:00881B89                  0>
seg004:00881B9C DebugContainer0 <8Ch, <0, 0, 0, 11h, 213h, offset chk_emy_col, 0>, 0>
seg004:00881BAF DebugContainer0 <8Dh, <0, 0, 0, 11h, 213h, offset pl_wk_tbl, 0>, 0>
seg004:00881BC2 DebugContainer0 <8Eh, <0, 0, 0, 11h, 213h, offset emy_col_a0, 0>, 0>
seg004:00881BD5 DebugContainer0 <8Fh, <0, 0, 0, 11h, 213h, offset emy_col_a1, 0>, 0>
seg004:00881BE8 DebugContainer0 <90h, <0, 0, 0, 11h, 213h, offset chk_emy_colt, 0>, 0>
seg004:00881BFB DebugContainer0 <91h, <0, 0, 0, 11h, 213h, offset set_emy_cor, 0>, 0>
seg004:00881C0E DebugContainer0 <92h, <0, 0, 0, 11h, 213h, offset chk_ride_flg, 0>, 0>
seg004:00881C21 DebugContainer0 <93h, <0, 0, 0, 11h, 213h, offset emy_cor_chg, 0>, 0>
seg004:00881C34 DebugContainer0 <94h, <0, 0, 0, 11h, 213h, offset cor_chg_cnt, 0>, 0>
seg004:00881C47 DebugContainer0 <95h, <0, 0, 0, 11h, 213h, offset chk_oya_pri, 0>, 0>
seg004:00881C5A DebugContainer0 <96h, <0, 0, 0, 11h, 213h, offset chk_oya_pri_1, 0>, \
seg004:00881C5A                  0>
seg004:00881C6D DebugContainer0 <97h, <0, 0, 0, 11h, 213h, offset set_damg_cor07, 0>, \
seg004:00881C6D                  0>
seg004:00881C80 DebugContainer0 <98h, <0, 0, 0, 11h, 213h, offset set_damg_cor06, 0>, \
seg004:00881C80                  0>
seg004:00881C93 DebugContainer0 <99h, <0, 0, 0, 11h, 213h, offset set_damg_cor05, 0>, \
seg004:00881C93                  0>
seg004:00881CA6 DebugContainer0 <9Ah, <0, 0, 0, 11h, 213h, offset set_damg_cor04, 0>, \
seg004:00881CA6                  0>
seg004:00881CB9 DebugContainer0 <9Bh, <0, 0, 0, 11h, 213h, offset set_damg_cor03, 0>, \
seg004:00881CB9                  0>
seg004:00881CCC DebugContainer0 <9Ch, <0, 0, 0, 11h, 213h, offset set_damg_cor02, 0>, \
seg004:00881CCC                  0>
seg004:00881CDF DebugContainer0 <9Dh, <0, 0, 0, 11h, 213h, offset set_damg_cor01, 0>, \
seg004:00881CDF                  0>
seg004:00881CF2 DebugContainer0 <9Eh, <0, 0, 0, 11h, 213h, offset chk_framein, 0>, 0>
seg004:00881D05 DebugContainer0 <9Fh, <0, 0, 0, 11h, 209h, offset space_pt, 0>, 0>
seg004:00881D18 DebugContainer0 <0A0h, <0, 0, 0, 11h, 213h, offset res_bgm_act, 0>, 0>
seg004:00881D2B DebugContainer0 <0A1h, <0, 0, 0, 11h, 213h, offset set_bgm_act, 0>, 0>
seg004:00881D3E DebugContainer0 <0A2h, <0, 0, 0, 11h, 213h, offset reset_bgm, 0>, 0>
seg004:00881D51 DebugContainer0 <0A3h, <0, 0, 0, 11h, 213h, offset reset_pl_data, 0>, \
seg004:00881D51                  0>
seg004:00881D64 DebugContainer0 <0A4h, <0, 0, 0, 11h, 213h, offset reset_pl_data0, 0>,\
seg004:00881D64                  0>
seg004:00881D77 DebugContainer0 <0A5h, <0, 0, 0, 11h, 213h, offset set_midbos_die, 0>,\
seg004:00881D77                  0>
seg004:00881D8A DebugContainer0 <0A6h, <0, 0, 0, 11h, 213h, offset kanbst_cg_tbl, 0>, \
seg004:00881D8A                  0>
seg004:00881D9D DebugContainer0 <0A7h, <0, 0, 0, 11h, 209h, offset midbos_die1, 0>, 0>
seg004:00881DB0 DebugContainer0 <0A8h, <0, 0, 0, 11h, 209h, offset midbos_die2_init, \
seg004:00881DB0                  0>, 0>
seg004:00881DC3 DebugContainer0 <0A9h, <0, 0, 0, 11h, 209h, offset kanban_set_tbl, 0>,\
seg004:00881DC3                  0>
seg004:00881DD6 DebugContainer0 <0AAh, <0, 0, 0, 11h, 213h, offset midbos_die2, 0>, 0>
seg004:00881DE9 DebugContainer0 <0ABh, <0, 0, 0, 11h, 209h, offset midbos_die3, 0>, 0>
seg004:00881DFC DebugContainer0 <0ACh, <0, 0, 0, 11h, 213h, offset clr_ride_flg, 0>, \
seg004:00881DFC                  0>
seg004:00881E0F DebugContainer0 <0ADh, <0, 0, 0, 11h, 213h, offset chk_boss_set, 0>, \
seg004:00881E0F                  0>
seg004:00881E22 DebugContainer0 <0AEh, <0, 0, 0, 11h, 213h, offset fix_scr_l, 0>, 0>
seg004:00881E35 DebugContainer0 <0AFh, <0, 0, 0, 11h, 213h, offset chk_scr_bgm, 0>, 0>
seg004:00881E48 DebugContainer0 <0B0h, <0, 0, 0, 11h, 213h, offset boss_init, 0>, 0>
seg004:00881E5B DebugContainer0 <0B1h, <0, 0, 0, 11h, 213h, offset scr_bgm_init, 0>, \
seg004:00881E5B                  0>
seg004:00881E6E DebugContainer0 <0B2h, <0, 0, 0, 11h, 213h, offset scr_bgm_init0, 0>, \
seg004:00881E6E                  0>
seg004:00881E81 DebugContainer0 <0B3h, <0, 0, 0, 11h, 213h, offset reset_scrlim, 0>, \
seg004:00881E81                  0>
seg004:00881E94 DebugContainer0 <0B4h, <0, 0, 0, 11h, 213h, offset set_scrlim_act, 0>,\
seg004:00881E94                  0>
seg004:00881EA7 DebugContainer0 <0B5h, <0, 0, 0, 11h, 213h, offset chglimrud_set_tbl, \
seg004:00881EA7                  0>, 0>
seg004:00881EBA DebugContainer0 <0B6h, <0, 0, 0, 11h, 213h, offset reset_all_scrlim, \
seg004:00881EBA                  0>, 0>
seg004:00881ECD DebugContainer0 <0B7h, <0, 0, 0, 11h, 213h, offset set_stageno, 0>, 0>
seg004:00881EE0 DebugContainer0 <0B8h, <0, 0, 0, 11h, 213h, offset set_cont_se, 0>, 0>
seg004:00881EF3 DebugContainer0 <0B9h, <0, 0, 0, 11h, 213h, offset flashout_act, 0>, \
seg004:00881EF3                  0>
seg004:00881F06 DebugContainer0 <0BAh, <0, 0, 0, 11h, 213h, offset flashout_1cor, 0>, \
seg004:00881F06                  0>
seg004:00881F19 DebugContainer0 <0BBh, <0, 0, 0, 11h, 213h, offset chk_play_type, 0>, \
seg004:00881F19                  0>
seg004:00881F2C DebugContainer0 <0BCh, <0, 0, 0, 11h, 213h, offset boss_die_init, 0>, \
seg004:00881F2C                  0>
seg004:00881F3F DebugContainer0 <0BDh, <0, 0, 0, 11h, 213h, offset boss_die_init0, 0>,\
seg004:00881F3F                  0>
seg004:00881F52 DebugContainer0 <0BEh, <0, 0, 0, 11h, 213h, offset wrt_player, 0>, 0>
seg004:00881F65 DebugContainer0 <0BFh, <0, 0, 0, 11h, 213h, offset play_wrt_tbl, 0>, \
seg004:00881F65                  0>
seg004:00881F78 DebugContainer0 <0C0h, <0, 0, 0, 11h, 213h, offset wrt_player0, 0>, 0>
seg004:00881F8B DebugContainer0 <0C1h, <0, 0, 0, 11h, 209h, offset set_friend_cg, 0>, \
seg004:00881F8B                  0>
seg004:00881F9E DebugContainer0 <0C2h, <0, 0, 0, 11h, 213h, offset set_friend_cg0, 0>,\
seg004:00881F9E                  0>
seg004:00881FB1 DebugContainer0 <0C3h, <0, 0, 0, 11h, 213h, offset get_ring, 0>, 0>
seg004:00881FC4 DebugContainer0 <0C4h, <0, 0, 0, 11h, 213h, offset wrt_zoom, 0>, 0>
seg004:00881FD7 DebugContainer0 <0C5h, <0, 0, 0, 11h, 213h, offset speedset2_m+1, 0>, \
seg004:00881FD7                  0>
seg004:00881FEA DebugContainer0 <0C6h, <0, 0, 0, 11h, 213h, offset zoom_posi_ctr, 0>, \
seg004:00881FEA                  0>
seg004:00881FFD DebugContainer0 <0C7h, <0, 0, 0, 11h, 213h, offset aim_emy_pl, 0>, 0>
seg004:00882010 DebugContainer0 <0C8h, <0, 0, 0, 11h, 213h, offset aim_emy_pl0, 0>, 0>
seg004:00882023 DebugContainer0 <0C9h, <0, 0, 0, 11h, 213h, offset aim_emy_pl1, 0>, 0>
seg004:00882036 DebugContainer0 <0CAh, <0, 0, 0, 11h, 213h, offset chk_pl_angle, 0>, \
seg004:00882036                  0>
seg004:00882049 DebugContainer0 <0CBh, <0, 0, 0, 11h, 213h, offset mask_spr, 0>, 0>
seg004:0088205C DebugContainer0 <0CCh, <0, 0, 0, 11h, 213h, offset mask_spr0, 0>, 0>
seg004:0088206F DebugContainer0 <0CDh, <0, 0, 0, 11h, 213h, offset pl_move_right, 0>, \
seg004:0088206F                  0>
seg004:00882082 DebugContainer0 <0CEh, <0, 0, 0, 11h, 213h, offset set_bane_jump, 0>, \
seg004:00882082                  0>
seg004:00882095 DebugContainer0 <0CFh, <0, 0, 0, 11h, 213h, offset chk_pl_dir, 0>, 0>
seg004:008820A8 DebugContainer0 <0D0h, <0, 0, 0, 11h, 213h, offset fox_auto, 0>, 0>
seg004:008820BB DebugContainer0 <0D1h, <0, 0, 0, 11h, 213h, offset nextst, 0>, 0>
seg004:008820CE DebugContainer0 <0D2h, <0, 0, 0, 11h, 213h, offset shake_se_act, 0>, \
seg004:008820CE                  0>
seg004:008820E1 DebugContainer0 <0D3h, <0, 0, 0, 11h, 213h, offset set_many_posi, 0>, \
seg004:008820E1                  0>
seg004:008820F4 DebugContainer0 <0D4h, <0, 0, 0, 11h, 213h, offset chg_super, 0>, 0>



This helps my work alot, as I am scripting enemies and bosses in a simular way, and there are so many versions of "fout"'s, it is very interesting to see why so many enemies are depending on their own copy of "show or auto destruction". And being able to get the real names for the very smart scripting subroutines emy_fall_col, emy_down_col, emy_right_col, and emy_left_col is a bonus! Same goes for all the gravity names!

To me, I don't care about local labels as they are hard to get right with IDA anyways, so I will be fine having all the 11h_213h structs done manually.

#6 User is offline LOst 

Posted 16 October 2011 - 06:18 PM

  • Sonic 2 HD - Lead Programmer
  • Posts: 4877
  • Joined: 10-January 03
  • Gender:Male
  • Wiki edits:2
http://forums.sonicr...ndpost&p=628327

I couldn't let go of this, even when I realized weeks ago that those labels will never make an understandable disassembly. The label names are worse descriptions than my own names for each function. But now the labels have their correct addresses. Thanks MainMemory for your hints! :)

#7 User is offline MainMemory 

Posted 16 October 2011 - 06:25 PM

  • Every day's the same old thing... Same place, different day...
  • Posts: 3207
  • Joined: 14-August 09
  • Gender:Not Telling
  • Project:SonLVL
  • Wiki edits:1,339
While I intend to use the same labels as the S&K SVN disassembly whenever possible, perhaps I will put these in as comments. Either way it's been bugging me for a while, so thanks for your help.

#8 User is offline LOst 

Posted 16 October 2011 - 06:31 PM

  • Sonic 2 HD - Lead Programmer
  • Posts: 4877
  • Joined: 10-January 03
  • Gender:Male
  • Wiki edits:2

View PostMainMemory, on 16 October 2011 - 06:25 PM, said:

While I intend to use the same labels as the S&K SVN disassembly whenever possible, perhaps I will put these in as comments. Either way it's been bugging me for a while, so thanks for your help.

No problem :)

Page 1 of 1
    Locked
    Locked Forum

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users