(DC) Sonic Adventure Prototype (1998-10-16)

Discussion in 'General Sonic Discussion' started by Orengefox, May 21, 2013.

  1. ICEknight

    ICEknight

    Researcher Researcher
    [​IMG] =P
     
  2. Catley

    Catley

    Member
    50
    0
    0
    Sega, you sneaky bastards. That's really cool that they would stick a conceptual design into the game, let alone in a scrambled poster!
     
  3. Is nobody else seeing the resemblance to Blaze?

    Obviously I'm pretty sure it's not supposed to be Blaze given the time difference between the games, but it really kinda gives me a Blaze vibe with that hairstyle. I doubt there's a connection though.
     
  4. ashthedragon

    ashthedragon

    Dragon Team Researcher
    1,362
    8
    18
    Spain
    Sonic Paradise & Sonic Ages
    holy shit..that's too much of a coincidence. But I doubt they were trying to implement an Aosth character of all things...maybe just an easter egg of typical "poster girl" in Sonic's world?
     
  5. darkspines35

    darkspines35

    It's Easy Actually. No, seriously. Tech Member
    248
    0
    16
    .V.
    Sanik Adevnt Casters
    Well like I mentioned yesterday, been working on the textures with my pal. Gotten about this much done.

    *image gone*

    Some of the stuff isn't right, or needs to be edited a bit. But it's coming together somewhat well.
     
  6. GeneHF

    GeneHF

    SEGA-ier than you'll potentially ever be. Site Staff
    8,389
    1
    16
    Scenic Studiopolis
    Complete Global Conquest
    It's looking very good so far. Can't wait to see the final product. Perhaps there can be a way to add it in as a sub-level to the game?
     
  7. darkspines35

    darkspines35

    It's Easy Actually. No, seriously. Tech Member
    248
    0
    16
    .V.
    Sanik Adevnt Casters
    Just a heads up. This level is really, REALLY hard to follow. It looks like it went through at least one design change with the texture IDs and maps when comparing the footage, those two loop checker images, and then the model itself. It's getting to be really hard to actually follow this...
     
  8. RyogaMasaki

    RyogaMasaki

    0xffffffff Oldbie
    I subscribed to your Youtube videos. It's the least I can do for your work so far. Aiiie, it's the old Windy Valley!! <3
     
  9. Catley

    Catley

    Member
    50
    0
    0
    I still can't get over how vast the entire level actually is. Makes me wish they had kept this design. It actually looks like a valley compared to the final stage. :P
    Anyway, off to make textures for Darkspines.
     
  10. 0r4ng3

    0r4ng3

    Member
    1,318
    0
    0
    So much "new" shit from this prototype. Interestingly some of the levels are already pretty much their final forms and not much was changed, though awfully incomplete. On the other hand, (for example Speed Hihgway 3 and Ice Cap 1 have some layout parts considerably different (some of it known, some of it not known).

    Twinkle Park looks the same, eh? Disappointing. :v:

    Thank you so much for all of these. :)

    [​IMG]

    Suddenly, the floating dress is the least of our worries.
     
  11. synchronizer

    synchronizer

    Member
    1,923
    1
    18
    Is Lost World accessible?
     
  12. SF94

    SF94

    Tech Member
    776
    3
    18
    Utah
    SA1/2 hax
    Found something rather useful. 2C169D18 (byte type) enables controls in most situations =P
    0 is enabled, 1 is disabled.

    Edit again: In fact, looks like freezing it at 0 will keep the level from ending... for the most part.

    Edit: Also the positions (x, y, and z) in that cheat table posted earlier are out of order and the incorrect type. They should be floats.
     
  13. evilhamwizard

    evilhamwizard

    Researcher
    1,336
    190
    43
    Well, I got the first test stage to load in game and almost got the second one to. I had to do some dirty things to get it working so I'm not satisfied with it.

    Here's basically what I did. I noticed when disassembling STG00 using MainMemory's IDC script and IDA Pro 5.5 that the stage has about 30 objects in the object list. All of these objects are common except for maybe the second to last object (which is for Big's gameplay). However, as I stated earlier, the objects in the list refer to old subroutine locations outside of the file (to 1ST_READ and SAKANA) so that's a good candidate for why they aren't working. The first two test maps have a SET file for object placement while the third one doesn't, so this may/may not be the reason why that one stage in particular is the only one that loads without any hacks.

    So what I did was disassemble a stage that DID refer to the correct subroutine locations for the common objects, Speed Highway (STG04). I got the 'correct' subroutine addresses for most of the objects this way, and found the address for the "SCENE CHANGE" in ADV0100 (Egg Carrier - tl note that the key for this stage is 0C930000). I was lucky with the last object though, since the address listed in STG00's file points outside of 1ST_READ.BIN and I don't think we have any documentation on Big's gameplay. But I looked around and noticed SAKANA.PRS, looked up the name and found the definition, opened it up in IDA Pro and sure enough I found the texture names and model for the sea bass (but only the sea bass, for some reason). That left me with only 4 objects to find, which unfortunately I could not find despite how hard I tried. The O SMP objects are either unused or they're common objects with a different name. I couldn't find an equivalent name elsewhere in other game files and even in the final NTSC-J release. I noticed that the subroutines of each object would've been at most 0x150 size apart from each other since they are a like in property, and should come a little before the "SAVE POINT" object. But I wasn't sure if I could find the correct address, so I just left it alone hoping the game might not use them.

    After I got the addresses, I simply went to each reference to the old addresses in my hex editor and changed them (they're represented in little endian). At first I changed them to what I thought were the correct addresses. The third test map still worked but the first two still did not, however this happened when loading the second test map:

    [​IMG]

    You can make out Tails, and with good contrast, the map loaded! But the emulator crashed right after that.

    So then I realized that maybe not dealing with those 4 SMP objects was causing problems, but first I wanted to see if they were being loaded onto any field at all.

    [​IMG]

    I used DXEdit to view the types of objects listed and their positioning to see what might've been loaded onto the field. I didn't have time to interpret all the data at the time so I just assumed that the order of the type number correlated with the order number of the object list.

    Below is a copy of the object list from my IDA database. Spoiler'd for size.

    Code (Text):
    1. ROM:0C954890 stru_C954890:   .data.b 2               ; Arg1 ; DATA XREF: ROM:0C954B10o
    2. ROM:0C954890                 .data.b 3               ; Arg2 ;
    3. ROM:0C954890                 .data.w 0               ; UseDist ;
    4. ROM:0C954890                 .data.b 0               ; Distance ;
    5. ROM:0C954890                 .datab.b 3, 0           ;
    6. ROM:0C954890                 .data.l 0               ; field_8 ;
    7. ROM:0C954890                 .data.l h'8C06AB08      ; LoadSub ; Should be 8C06ED88
    8. ROM:0C954890                 .data.l aRing           ; Name ;
    9. ROM:0C954890                 .data.b 2               ; Arg1 ;
    10. ROM:0C954890                 .data.b 2               ; Arg2 ;
    11. ROM:0C954890                 .data.w 0               ; UseDist ;
    12. ROM:0C954890                 .data.b 0               ; Distance ;
    13. ROM:0C954890                 .datab.b 3, 0           ;
    14. ROM:0C954890                 .data.l 0               ; field_8 ;
    15. ROM:0C954890                 .data.l h'8C053F00      ; LoadSub ; Should be 8C057020
    16. ROM:0C954890                 .data.l aSpring         ; Name ;
    17. ROM:0C954890                 .data.b 2               ; Arg1 ;
    18. ROM:0C954890                 .data.b 2               ; Arg2 ;
    19. ROM:0C954890                 .data.w 0               ; UseDist ;
    20. ROM:0C954890                 .data.b 0               ; Distance ;
    21. ROM:0C954890                 .datab.b 3, 0           ;
    22. ROM:0C954890                 .data.l 0               ; field_8 ;
    23. ROM:0C954890                 .data.l h'8C0545C0      ; LoadSub ; Should be 8C0576E0
    24. ROM:0C954890                 .data.l aSpringb        ; Name ;
    25. ROM:0C954890                 .data.b 3               ; Arg1 ;
    26. ROM:0C954890                 .data.b 3               ; Arg2 ;
    27. ROM:0C954890                 .data.w 0               ; UseDist ;
    28. ROM:0C954890                 .data.b 0               ; Distance ;
    29. ROM:0C954890                 .datab.b 3, 0           ;
    30. ROM:0C954890                 .data.l 0               ; field_8 ;
    31. ROM:0C954890                 .data.l h'8C04AEA4      ; LoadSub ; Should be 8C04CF64
    32. ROM:0C954890                 .data.l aOAxpnl         ; Name ;
    33. ROM:0C954890                 .data.b 6               ; Arg1 ;
    34. ROM:0C954890                 .data.b 3               ; Arg2 ;
    35. ROM:0C954890                 .data.w 0               ; UseDist ;
    36. ROM:0C954890                 .data.b 0               ; Distance ;
    37. ROM:0C954890                 .datab.b 3, 0           ;
    38. ROM:0C954890                 .data.l 0               ; field_8 ;
    39. ROM:0C954890                 .data.l h'8C04C880      ; LoadSub ; Should be 8C04EB80
    40. ROM:0C954890                 .data.l aOIronb         ; Name ;
    41. ROM:0C954890                 .data.b 2               ; Arg1 ;
    42. ROM:0C954890                 .data.b 3               ; Arg2 ;
    43. ROM:0C954890                 .data.w 0               ; UseDist ;
    44. ROM:0C954890                 .data.b 0               ; Distance ;
    45. ROM:0C954890                 .datab.b 3, 0           ;
    46. ROM:0C954890                 .data.l 0               ; field_8 ;
    47. ROM:0C954890                 .data.l h'8C04D52A      ; LoadSub ; Should be 8C04F82A
    48. ROM:0C954890                 .data.l aOFebjg         ; Name ;
    49. ROM:0C954890                 .data.b 2               ; Arg1 ;
    50. ROM:0C954890                 .data.b 3               ; Arg2 ;
    51. ROM:0C954890                 .data.w 0               ; UseDist ;
    52. ROM:0C954890                 .data.b 0               ; Distance ;
    53. ROM:0C954890                 .datab.b 3, 0           ;
    54. ROM:0C954890                 .data.l 0               ; field_8 ;
    55. ROM:0C954890                 .data.l h'8C056840      ; LoadSub ; Should be 8C0599C0
    56. ROM:0C954890                 .data.l aOToge          ; Name ;
    57. ROM:0C954890                 .data.b 3               ; Arg1 ;
    58. ROM:0C954890                 .data.b 3               ; Arg2 ;
    59. ROM:0C954890                 .data.w 0               ; UseDist ;
    60. ROM:0C954890                 .data.b 0               ; Distance ;
    61. ROM:0C954890                 .datab.b 3, 0           ;
    62. ROM:0C954890                 .data.l 0               ; field_8 ;
    63. ROM:0C954890                 .data.l h'8C04C568      ; LoadSub ; Should be 8C04E688
    64. ROM:0C954890                 .data.l aOEmeP          ; Name ;
    65. ROM:0C954890                 .data.b 2               ; Arg1 ;
    66. ROM:0C954890                 .data.b 3               ; Arg2 ;
    67. ROM:0C954890                 .data.w 0               ; UseDist ;
    68. ROM:0C954890                 .data.b 0               ; Distance ;
    69. ROM:0C954890                 .datab.b 3, 0           ;
    70. ROM:0C954890                 .data.l 0               ; field_8 ;
    71. ROM:0C954890                 .data.l h'8C050D60      ; LoadSub ; Should be 8C053FA0
    72. ROM:0C954890                 .data.l aORelease       ; Name ;
    73. ROM:0C954890                 .data.b 6               ; Arg1 ;
    74. ROM:0C954890                 .data.b 3               ; Arg2 ;
    75. ROM:0C954890                 .data.w 0               ; UseDist ;
    76. ROM:0C954890                 .data.b 0               ; Distance ;
    77. ROM:0C954890                 .datab.b 3, 0           ;
    78. ROM:0C954890                 .data.l 0               ; field_8 ;
    79. ROM:0C954890                 .data.l h'8C055AA0      ; LoadSub ; Should be 8C058BC0
    80. ROM:0C954890                 .data.l aOSwitch        ; Name ;
    81. ROM:0C954890                 .data.b 10              ; Arg1 ;
    82. ROM:0C954890                 .data.b 3               ; Arg2 ;
    83. ROM:0C954890                 .data.w 0               ; UseDist ;
    84. ROM:0C954890                 .data.b 0               ; Distance ;
    85. ROM:0C954890                 .datab.b 3, 0           ;
    86. ROM:0C954890                 .data.l 0               ; field_8 ;
    87. ROM:0C954890                 .data.l h'8C04B9A0      ; LoadSub ; Should be 8C04DA60
    88. ROM:0C954890                 .data.l aCmnKusa        ; Name ;
    89. ROM:0C954890                 .data.b 6               ; Arg1 ;
    90. ROM:0C954890                 .data.b 3               ; Arg2 ;
    91. ROM:0C954890                 .data.w 0               ; UseDist ;
    92. ROM:0C954890                 .data.b 0               ; Distance ;
    93. ROM:0C954890                 .datab.b 3, 0           ;
    94. ROM:0C954890                 .data.l 0               ; field_8 ;
    95. ROM:0C954890                 .data.l h'8C04B6A0      ; LoadSub ; Should be 8C04D760
    96. ROM:0C954890                 .data.l aCmn_dring      ; Name ;
    97. ROM:0C954890                 .data.b 2               ; Arg1 ;
    98. ROM:0C954890                 .data.b 3               ; Arg2 ;
    99. ROM:0C954890                 .data.w 0               ; UseDist ;
    100. ROM:0C954890                 .data.b 0               ; Distance ;
    101. ROM:0C954890                 .datab.b 3, 0           ;
    102. ROM:0C954890                 .data.l 0               ; field_8 ;
    103. ROM:0C954890                 .data.l h'8C04B160      ; LoadSub ; Should be 8C04D220
    104. ROM:0C954890                 .data.l aOBaloon        ; Name ;
    105. ROM:0C954890                 .data.b 2               ; Arg1 ;
    106. ROM:0C954890                 .data.b 3               ; Arg2 ;
    107. ROM:0C954890                 .data.w 0               ; UseDist ;
    108. ROM:0C954890                 .data.b 0               ; Distance ;
    109. ROM:0C954890                 .datab.b 3, 0           ;
    110. ROM:0C954890                 .data.l 0               ; field_8 ;
    111. ROM:0C954890                 .data.l h'8C04DD38      ; LoadSub ; Should be 8C050048
    112. ROM:0C954890                 .data.l aOItembox       ; Name ;
    113. ROM:0C954890                 .data.b 6               ; Arg1 ;
    114. ROM:0C954890                 .data.b 2               ; Arg2 ;
    115. ROM:0C954890                 .data.w 0               ; UseDist ;
    116. ROM:0C954890                 .data.b 0               ; Distance ;
    117. ROM:0C954890                 .datab.b 3, 0           ;
    118. ROM:0C954890                 .data.l 0               ; field_8 ;
    119. ROM:0C954890                 .data.l h'8C0518A0      ; LoadSub ; Should be 8C054940
    120. ROM:0C954890                 .data.l aRocketH        ; Name ;
    121. ROM:0C954890                 .data.b 6               ; Arg1 ;
    122. ROM:0C954890                 .data.b 2               ; Arg2 ;
    123. ROM:0C954890                 .data.w 0               ; UseDist ;
    124. ROM:0C954890                 .data.b 0               ; Distance ;
    125. ROM:0C954890                 .datab.b 3, 0           ;
    126. ROM:0C954890                 .data.l 0               ; field_8 ;
    127. ROM:0C954890                 .data.l h'8C0519C0      ; LoadSub ; Should be 8C054A60
    128. ROM:0C954890                 .data.l aRocketHs       ; Name ;
    129. ROM:0C954890                 .data.b 6               ; Arg1 ;
    130. ROM:0C954890                 .data.b 2               ; Arg2 ;
    131. ROM:0C954890                 .data.w 0               ; UseDist ;
    132. ROM:0C954890                 .data.b 0               ; Distance ;
    133. ROM:0C954890                 .datab.b 3, 0           ;
    134. ROM:0C954890                 .data.l 0               ; field_8 ;
    135. ROM:0C954890                 .data.l h'8C051B00      ; LoadSub ; Should be 8C054BA0
    136. ROM:0C954890                 .data.l aRocketV        ; Name ;
    137. ROM:0C954890                 .data.b 6               ; Arg1 ;
    138. ROM:0C954890                 .data.b 2               ; Arg2 ;
    139. ROM:0C954890                 .data.w 0               ; UseDist ;
    140. ROM:0C954890                 .data.b 0               ; Distance ;
    141. ROM:0C954890                 .datab.b 3, 0           ;
    142. ROM:0C954890                 .data.l 0               ; field_8 ;
    143. ROM:0C954890                 .data.l h'8C051C20      ; LoadSub ; Should be 8C054CC0
    144. ROM:0C954890                 .data.l aRocketVs       ; Name ;
    145. ROM:0C954890                 .data.b 2               ; Arg1 ;
    146. ROM:0C954890                 .data.b 2               ; Arg2 ;
    147. ROM:0C954890                 .data.w 1               ; UseDist ;
    148. ROM:0C954890                 .data.b 0               ; Distance ;
    149. ROM:0C954890                 .data.b h'24, h'74, h'4A ;
    150. ROM:0C954890                 .data.l 0               ; field_8 ;
    151. ROM:0C954890                 .data.l h'8C04ECEE      ; LoadSub ; Should be 8C0512EE
    152. ROM:0C954890                 .data.l aOJpanel        ; Name ;
    153. ROM:0C954890                 .data.b 15              ; Arg1 ;
    154. ROM:0C954890                 .data.b 3               ; Arg2 ;
    155. ROM:0C954890                 .data.w 0               ; UseDist ;
    156. ROM:0C954890                 .data.b 0               ; Distance ;
    157. ROM:0C954890                 .datab.b 3, 0           ;
    158. ROM:0C954890                 .data.l 0               ; field_8 ;
    159. ROM:0C954890                 .data.l h'8C0536CE      ; LoadSub ; Should be 8C0567C2
    160. ROM:0C954890                 .data.l aOSavePoint     ; Name ;
    161. ROM:0C954890                 .data.b 2               ; Arg1 ;
    162. ROM:0C954890                 .data.b 3               ; Arg2 ;
    163. ROM:0C954890                 .data.w 0               ; UseDist ;
    164. ROM:0C954890                 .data.b 0               ; Distance ;
    165. ROM:0C954890                 .datab.b 3, 0           ;
    166. ROM:0C954890                 .data.l 0               ; field_8 ;
    167. ROM:0C954890                 .data.l h'8C0281CE      ; LoadSub ; Should be 8C0294AE
    168. ROM:0C954890                 .data.l aWall           ; Name ;
    169. ROM:0C954890                 .data.b 2               ; Arg1 ;
    170. ROM:0C954890                 .data.b 2               ; Arg2 ;
    171. ROM:0C954890                 .data.w 0               ; UseDist ;
    172. ROM:0C954890                 .data.b 0               ; Distance ;
    173. ROM:0C954890                 .datab.b 3, 0           ;
    174. ROM:0C954890                 .data.l 0               ; field_8 ;
    175. ROM:0C954890                 .data.l h'8C02E6FE      ; LoadSub ; Should be 8C010C40
    176. ROM:0C954890                 .data.l aSceneChange    ; Name ;
    177. ROM:0C954890                 .data.b 3               ; Arg1 ;
    178. ROM:0C954890                 .data.b 3               ; Arg2 ;
    179. ROM:0C954890                 .data.w 0               ; UseDist ;
    180. ROM:0C954890                 .data.b 0               ; Distance ;
    181. ROM:0C954890                 .datab.b 3, 0           ;
    182. ROM:0C954890                 .data.l 0               ; field_8 ;
    183. ROM:0C954890                 .data.l h'8C0530A0      ; LoadSub ;
    184. ROM:0C954890                 .data.l aOSmpS          ; Name ;
    185. ROM:0C954890                 .data.b 3               ; Arg1 ;
    186. ROM:0C954890                 .data.b 3               ; Arg2 ;
    187. ROM:0C954890                 .data.w 0               ; UseDist ;
    188. ROM:0C954890                 .data.b 0               ; Distance ;
    189. ROM:0C954890                 .datab.b 3, 0           ;
    190. ROM:0C954890                 .data.l 0               ; field_8 ;
    191. ROM:0C954890                 .data.l h'8C0531F0      ; LoadSub ;
    192. ROM:0C954890                 .data.l aOSmpM          ; Name ;
    193. ROM:0C954890                 .data.b 3               ; Arg1 ;
    194. ROM:0C954890                 .data.b 3               ; Arg2 ;
    195. ROM:0C954890                 .data.w 0               ; UseDist ;
    196. ROM:0C954890                 .data.b 0               ; Distance ;
    197. ROM:0C954890                 .datab.b 3, 0           ;
    198. ROM:0C954890                 .data.l 0               ; field_8 ;
    199. ROM:0C954890                 .data.l h'8C053340      ; LoadSub ;
    200. ROM:0C954890                 .data.l aOSmpL          ; Name ;
    201. ROM:0C954890                 .data.b 3               ; Arg1 ;
    202. ROM:0C954890                 .data.b 3               ; Arg2 ;
    203. ROM:0C954890                 .data.w 0               ; UseDist ;
    204. ROM:0C954890                 .data.b 0               ; Distance ;
    205. ROM:0C954890                 .datab.b 3, 0           ;
    206. ROM:0C954890                 .data.l 0               ; field_8 ;
    207. ROM:0C954890                 .data.l h'8C053490      ; LoadSub ;
    208. ROM:0C954890                 .data.l aOSmpsw         ; Name ;
    209. ROM:0C954890                 .data.b 2               ; Arg1 ;
    210. ROM:0C954890                 .data.b 3               ; Arg2 ;
    211. ROM:0C954890                 .data.w 0               ; UseDist ;
    212. ROM:0C954890                 .data.b 0               ; Distance ;
    213. ROM:0C954890                 .datab.b 3, 0           ;
    214. ROM:0C954890                 .data.l 0               ; field_8 ;
    215. ROM:0C954890                 .data.l h'8C056420      ; LoadSub ; Should be 8C0595A0
    216. ROM:0C954890                 .data.l aSpringh        ; Name ;
    217. ROM:0C954890                 .data.b 2               ; Arg1 ;
    218. ROM:0C954890                 .data.b 3               ; Arg2 ;
    219. ROM:0C954890                 .data.w 0               ; UseDist ;
    220. ROM:0C954890                 .data.b 0               ; Distance ;
    221. ROM:0C954890                 .datab.b 3, 0           ;
    222. ROM:0C954890                 .data.l 0               ; field_8 ;
    223. ROM:0C954890                 .data.l h'8C0D1214      ; LoadSub ; Should be 8C0D9354
    224. ROM:0C954890                 .data.l aSpinaA         ; Name ;
    225. ROM:0C954890                 .data.b 2               ; Arg1 ;
    226. ROM:0C954890                 .data.b 3               ; Arg2 ;
    227. ROM:0C954890                 .data.w 0               ; UseDist ;
    228. ROM:0C954890                 .data.b 0               ; Distance ;
    229. ROM:0C954890                 .datab.b 3, 0           ;
    230. ROM:0C954890                 .data.l 0               ; field_8 ;
    231. ROM:0C954890                 .data.l h'8C0D1344      ; LoadSub ; Should be 8C0D9484
    232. ROM:0C954890                 .data.l aSpinaB         ; Name ;
    233. ROM:0C954890                 .data.b 2               ; Arg1 ;
    234. ROM:0C954890                 .data.b 3               ; Arg2 ;
    235. ROM:0C954890                 .data.w 0               ; UseDist ;
    236. ROM:0C954890                 .data.b 0               ; Distance ;
    237. ROM:0C954890                 .datab.b 3, 0           ;
    238. ROM:0C954890                 .data.l 0               ; field_8 ;
    239. ROM:0C954890                 .data.l h'8C0D146A      ; LoadSub ; Should be 8C0D95AA
    240. ROM:0C954890                 .data.l aSpinaC         ; Name ;
    241. ROM:0C954890                 .data.b 2               ; Arg1 ;
    242. ROM:0C954890                 .data.b 3               ; Arg2 ;
    243. ROM:0C954890                 .data.w 0               ; UseDist ;
    244. ROM:0C954890                 .data.b 0               ; Distance ;
    245. ROM:0C954890                 .datab.b 3, 0           ;
    246. ROM:0C954890                 .data.l 0               ; field_8 ;
    247. ROM:0C954890                 .data.l h'8CB00004      ; LoadSub ; No change necessary? SAKANA.BIN
    248. ROM:0C954890                 .data.l aSSbass         ; Name ;
    249. ROM:0C954890                 .data.b 2               ; Arg1 ;
    250. ROM:0C954890                 .data.b 2               ; Arg2 ;
    251. ROM:0C954890                 .data.w 0               ; UseDist ;
    252. ROM:0C954890                 .data.b 0               ; Distance ;
    253. ROM:0C954890                 .datab.b 3, 0           ;
    254. ROM:0C954890                 .data.l 0               ; field_8 ;
    255. ROM:0C954890                 .data.l h'8C04FA60      ; LoadSub ; Should be 8C0520C0
    256. ROM:0C954890                 .data.l aOTikal         ; Name
    257. ROM:0C954B10                 ObjectListHead <32, stru_C954890>
    258.  

    So judging by the list, I didn't see any reference in the set file to those objects that I couldn't find. But still, something was still obviously a problem. So I went and changed the subroutine addresses to those four objects to the same address as the ring. And still, the same thing happened. I was thinking that the problem might've been objects that I underestimated when trying to find addresses for them (like SCENE CHANGE and maybe even SS BASS) so, I changed ALL the subroutine addresses in the file to the same address as the ring.

    And then...

    [​IMG]

    Yay!

    [​IMG]

    This is the first test stage. No textures (there aren't supposed to be any so...) and there are few objects here. But of course since I changed the address to the subroutine of the ring, everything's a ring. I may plan to go back and change each address back one by one to see which one was causing the stage to crash so that maybe you could get a better glimpse of the stage, but I worked too much on this stuff that I kinda lost patience with it. The SET file (object placement) for the first two stages belong to Sonic (according to the naming), but only the SET file for the first test map has anything in it. The SET file for the second stage doesn't have anything inside except for maybe a ring I think, that's it.

    Unfortunately, the second test map still does the same thing. I have a theory but I don't know if it's plausible or not. But the thing that I noticed with the second map is the dome in the map. I wonder if that's supposed to be filled with water? I don't understand how water works in SA1, but maybe the reason why the stage crashes where it does is because it's trying to load water on the stage? I don't know how to prove the theory. It would be a good place to test Big's fishing.

    Anyway, that's all I have for STG00. Here are some files if anyone else wants to investigate further:

    Demul 0.5.7 savestate for the first test map
    Edited STG00.PRS that produced the above results with the first level.
    STG00 IDA Pro 5.5 database

    A HUGE big thanks to Sazpaimon for taking the time for testing my edits and taking the screenshots/savestate. :)
     
  14. Wanted to ask, how exactly do I use the edited STG00.prs? Also, how do I edit a STG##.prs?
     
  15. Glu

    Glu

    Member
    2
    0
    0
    It is possible to circumvent that. It works for all scenes that have a cutscene.
    Quick version:
    Make the level load from the white start screen with a character that has no cutscene there. Set a write breakpoint at LoadThing and run a few times. It will go from 0 to 1 to 4 to 11(after a few seconds). As soon as it hits 11 stop running, go to the calling function in Cheat Engine's debugger, and nop the instruction that calls the function you just watched. Don't nop the function itself, it is used by dcemul in a lot of more places. Finally, set LoadThing back to 4 manually, and hit run again. Have fun ;).

    The idea is to keep the game from ever setting LoadThing to 10. In cases where there is no autodemo present, apparently controls won't get disabled by the game when loading the level. Instead, it will run the level for 1-2 seconds(with controls enabled!), realize that there is no autodemo present to play(this happens in state 11), and end the level(state 10). "Ending the level" also means to disable controls, in some other way than usually, so the enable controls code doesn't work here. If we keep the game from reaching state 10, this will never happen. That's exactly what the method above does, with a nice side effect of preventing that flickering. Of course it's really ugly since it modifies the code dcemul generates, but it works for now. Any better ideas? Maybe freeze the counter that tells the game to enter state 11(where is that counter? EDIT: Is there a counter?)?

    Most levels are missing a majority of their scripts though. I don't know if there just aren't any, or if the game doesn't load them because it's supposed to play a cutscene. Even warps don't work at all, they're just dead ends. Some scripts are present though, like those for doors and switches. Choosing Amy as your character crashes them for some reason.

    EDIT: Fishing works in Big's level!

    Pictures of accessible areas, spoilered. Those are all I have been able to get to so far.
    [​IMG][​IMG][​IMG]
    [​IMG][​IMG]
    You can even open the gates
    [​IMG]
    [​IMG]
     
  16. SF94

    SF94

    Tech Member
    776
    3
    18
    Utah
    SA1/2 hax
    This ought to be useful too: 2C78E9E2, 2 bytes. Ring count!
     
  17. evilhamwizard

    evilhamwizard

    Researcher
    1,336
    190
    43
    To edit the PRS files you need to decompress them with something like PuyoTools. Then you can edit the binary file that's extracted with either a Hex Editor or with a disassembler. Then when you're done, you can repack the file into a PRS and then use one of the guides/tools floating around for reassembling the GDI/CDI disc image for testing.

    Also, LAND1800 as someone has stated before makes references to the Egg Carrier textures. That's because this file (as indicated by the number 18) is actually the map for the Chaos 6 battle. For some reason, this one stray file isn't compressed and it's just left in the directory. It's 3 days earlier than the one packaged in a PRS file and both have a time stamp in September.

    Here's what it looks like (using the texture file LM_CHAOS6.PRS from NTSC-J final seems to work nicely for the most part):

    [​IMG]

    There's a LandTable struct in the file @ 0CB2066C. The key for this is 0C2B0000.
     
  18. Glisp

    Glisp

    That one weird guy that does stuff. Member
    1,278
    0
    16
    Bloomington, IN
    None at the moment I'm afraid.
    I've been going through here looking at the progress for most of the night. I didn't even take a break to play a game for a change.

    Things I found interesting about this thread:
    *The Chao Blender in the Chao Garden (made me LMAFO)
    *The Ice Cap 1 Bridge (that's actually been one of the things I've been wanting to look at, I'd love for the prototype version of IceCap 1 to be ported to SADX PC sometime in the future.)
    *Prototype Windy Valley (The holy grail of all SA related finds right there)
    *That Duck Badnik (for some reason I was reminded of Ball Hog from Sonic 1 due to its erm... projectiles...)
     
  19. MainMemory

    MainMemory

    Have no fear...Amy Rose is here! Tech Member
    4,486
    114
    43
    SonLVL
    That got me for a bit when converting the list for SADXPC: they're called "O SIMPLE" in the final, and are included in Mystic Ruin's object list for some reason.
     
  20. Vahkiti

    Vahkiti

    20
    0
    0
    Canadialand
    Professional let's player, video gamer, chiptune composer
    Alright, as a first time poster, let me just say that the things going on in this topic, bloody brilliant. I haven't downloaded anything myself just yet just because for the moment, getting things running seems a little more complicated than it's worth for me, but never the less, great work guys!

    Anyways to the main point of my post, I noticed most of you guys are using Demul. Likewise I noticed that a lot of you guys have been having many graphical and physics related bugs. my question is why you aren't using NullDC instead. It has its fair share of bugs, but as far as I'm aware it is still the most stable Dreamcast emulator.

    On a side note, if anyone needs help testing on original hardware, I can be of assistance if you so wish.