Sonic and Sega Retro Message Board: Best means to go about structuring data when making a hacking utility? - Sonic and Sega Retro Message Board

Jump to content

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

Best means to go about structuring data when making a hacking utility? Another one of my dumbassed questions.

#1 User is offline Travelsonic 

Posted 01 February 2019 - 01:17 PM

  • Posts: 734
  • Joined: 01-March 05
For a while I have been reverse engineering (or rather, trying to anyways) Konami's DDR series. I feel like I have enough information where I can make a multipurpose utility (think equivalent to what GerbilSoft's Sonic Hacking Wiz Pro, or Esrael's ESE/ESEII was for Sonic games in the early-mid 2000s ... *nostalgic sigh* ... only for the Playstation2 DDR mixes).

One thing that I am struggling with is the best way to handle/manage the data for different games, as this utility will support multiple games starting with support for Playstation2 games. My problem comes specifically with managing the different places where the editor will look for data to edit within different parts of the program (coordinates for object positioning, color palettes for songwheel slot text on the music select screen, etc), Playstation2 games pre-SuperNOVA using largely the same engine only with data in different addresses (and features being added and / or removed in different mixes - beginner mode added to the U.S version of MAX2, Marvelous timing added in EXTREME, etc), SuperNOVA seeming to use a newer version of the engine. Also, EVENTUALLY (as my research continues) I would like to add support for Playstation1 mixes, and older arcade mixes (bemani system573 games)

I feel overwhelmed, and I probably shouldn't be. ~_~
This post has been edited by Travelsonic: 01 February 2019 - 01:26 PM

#2 User is offline van0014 

Posted 24 March 2019 - 04:43 AM

  • Posts: 3
  • Joined: 19-March 19
The first thought that comes to mind is using an array of addresses for each game. The array index would be used to select an address, independently of the data type. That means having one array per game, and choosing between arrays when the game is changed. A 2D array could be used for keeping information on the expected data length, or for other handy reasons.

What IDE will you use?
This post has been edited by van0014: 24 March 2019 - 04:43 AM

#3 User is offline Billy 

Posted 24 March 2019 - 12:16 PM

  • RIP Oderus Urungus
  • Posts: 1826
  • Joined: 24-June 05
  • Gender:Male
  • Location:Colorado, USA
  • Project:Indie games
  • Wiki edits:15
Assuming you're writing this in an object oriented language, I would suggest using a bridge design pattern, so as to swap out implementation for each game you support.

#4 User is offline Travelsonic 

Posted 05 April 2019 - 01:20 PM

  • Posts: 734
  • Joined: 01-March 05

View Postvan0014, on 24 March 2019 - 04:43 AM, said:

The first thought that comes to mind is using an array of addresses for each game. The array index would be used to select an address, independently of the data type. That means having one array per game, and choosing between arrays when the game is changed. A 2D array could be used for keeping information on the expected data length, or for other handy reasons.

What IDE will you use?



For something like a filedata table extractor that I have made, I did exactly this, and as solutions go, for those cases, it works fine.

Problem for me is that I feel like there will be a lot of data being categorized (addresses for positioning for various elements, addresses for data loads, addresses for SFX indexes, and categories for various addresses in each group (attract screen related, menu related, in game / song related, etc) , not sure if I want to turn my program into a proverbial DBMS (Database Management System) (especially if there are routes to keep the data external to the program (and just collected/managed by the program), which would allow for users to customize the program in so far as adding support for games I may have not added out of the box support for). (Even though database design/architecture seems to be a strong suit of mine :P )

I am using Visual Studio 2017, and am coding this in C#.


View PostBilly, on 24 March 2019 - 12:16 PM, said:

Assuming you're writing this in an object oriented language, I would suggest using a bridge design pattern, so as to swap out implementation for each game you support.


I am definitely looking into this.
This post has been edited by Travelsonic: 05 April 2019 - 01:24 PM

Page 1 of 1
    Locked
    Locked Forum

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