Author Topic: How do I program SSGs for SpoilerAL?  (Read 5520 times)

How do I program SSGs for SpoilerAL?
« on: February 20, 2018, 06:22:39 PM »
I want to make a SpoilerAL SSG myself, but I don't know where to start. I did not find an English guide on creating SpoilerAL SSGs. In fact, the only SSG creation guide I know of are the files in the "HowToSSG" folder in the SpoilerAL installation folder. That guide is in Japanese and Chromium can not translate it. So if anybody can make or has found a detailed English guide on making SpoilerAL SSGs, please let me know. I would definetly be interested.

(Copied from a post I made in reddit.com/r/touhou)
Not that a signature matters.

Arcorann

  • hey catgirl
  • Surprisingly unkempt
Re: How do I program SSGs for SpoilerAL?
« Reply #1 on: February 22, 2018, 01:52:32 AM »
Depends on what you want to make. Translating the entire guide would take quite some time, but if you only want specific portions I can provide some info.

Re: How do I program SSGs for SpoilerAL?
« Reply #2 on: February 22, 2018, 10:34:38 AM »
I want to make an SSG which is mainly for skipping stage portions. For example boss rush and midboss rush. I also want to have frameskip functionality so that I can warp to any place in a stage.
So my main goal is to be able to skip portions of the game.
Not that a signature matters.

CreepyNinja_

  • Just Another Luna Dodger :v
Re: How do I program SSGs for SpoilerAL?
« Reply #3 on: February 22, 2018, 12:31:55 PM »
It's easier said than done man. In order to wrap to a certain frame or skip parts of the game you would need exact addresses which, by changing them, will make a certain effect.

Either way, I'll help you a little if you really want to make one.

--------------------
[script] [/script] - It starts and end the script part of the file. Everything outside it will not be parsed by program.
[title] Name that shows on select screen
[creator] For example "32th System"
[maker] Creator of the game or software to which this SSG is made for. For example, for Touhou games it would be "Team Shanghai Alice"
[process] It's the process which the script will look for, for example "th07.exe"
[note] [/note] - Some info about the script lands here.

In understanding the way you make menus, selectable, you may would like to check the attachment.

But what is important is:
[group]Main  //main group, I guess it's necessary to make it all work.
[subject]Some_name:dir //makes a "directory"
[subject]Some settings/ON/_:toggle,0x44116B,00,FF
// I would explain it this way: It makes a selectable entry labeled "Some settings". When clicked, on the right displays a label "ON". By using _:toggle we instruct the program it's a toggleable setting (it will have check box). Next three parameters are related to adress and changed values I guess, I can't help you much here, you need to check it out by yourself.
[back] //Ends the "directory" part
[/group]

Re: How do I program SSGs for SpoilerAL?
« Reply #4 on: February 22, 2018, 02:30:32 PM »
A good start would be to take a look at the game's memory using something like process hacker. Can you give me a hint at which memory addresses store what. What I can already read out of the memory viewer are memory locations linked to certain DLLs. Memory linked to d3dx9_43.dll is obviously for graphics. By looking up what each of the DLLs the game accesses does I could determine in which memory locations I should look in order to find the right addresses.

EDIT: So far I have made a process dump of me at the beginning of a stage and a process dump of me at the end of a stage. I now have 2 stage progression rates saved as process dumps I can compare.

EDIT2: I decided to use Cheat Engine in order to find the memory address containing the start of the currently running ECL script. Since the start of the ECL script is a dynamic memory address but I need a static address, there is a pointer to that address. When I look for a memory pointer pointing to the memory address containing the start of the ECL script, Cheat Engine doesn't find anything. So my progress so far is: I can find the stage ECL in memory but I can not find the pointer to it.



EDIT 3, GIANT PROGRESS HAS BEEN MADE: I have found the static memory pointer pointing to the ECL in the game's memory. And only on Windows 8 Cheat Engine managed to find the pointer. If I didn't blow up my Windows 10 partition in favor of Windows 8 I wouldn't have gotten to this point.

EDIT 4: I have been learning a lot of ECL scripting lately. I can now skip to the mid-bosses of stages easily through memory manipulation. A program I use to find out which parts of an ECL in memory to change is VBinDiff. It's a little command line utility which shows the HEX code differences of 2 files. I will implement mid-boss rush first, then I will look into practicing the second mid-boss non on it's own. The thing to figure out next for me is frameskip to make practicing stage portions in isolation easier.
The ECL documentation I have used is http://nutzer.bplaced.net/Database/Menu.html but I will avoid it in the future because mdude/mddass/mdudedass/dass/Guy told me it is outdated. I will use the Chinese or his documentation instead but I will try to use the documentation of the guy with the many names as much as possible in favor of the Chinese documentation.
« Last Edit: March 28, 2018, 09:39:55 PM by 32th System »
Not that a signature matters.