Post subject: Revelations: The Demon Slayer
Editor, Expert player (2457)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
"Revelations: The Demon Slayer" is a basic monster collecting RPG for GB/GBC. This shouldn't be a difficult project for anyone who's done RPG TASes before. Here is a route demonstration that completes the game in about 39 minutes: http://dehacked.2y.net/microstorage.php/info/1813246935/Revelations-Route-Demo.vbm (The real run might be about 33 minutes.) I have failed to develop a script for manipulating the battles, but I have done enough testing to be able to plan the route. In the current plan, the battle screen will be entered only 20 times: 5 intentional random encounters + 2 skippable fights + 13 bosses In this game, almost everything takes a lot of time due to slow message speed. This means that getting any extra equipment or level-ups is almost never worth it. Also, the armor of bosses gets tough quickly, so it is not worth it to let weak team members live and get level-ups (level-up messages waste lots of time). On each level-up, 1 point can be freely assigned to one of the stats. The main character needs only strength (or maybe 1-5 points of luck somewhere late in the game, if the RNG favors it and gives better damage output). The sole exception to the general slowness is auto-fighting in the battles, which is very fast. Auto-fighting mode uses turns in rapid succession without any messages until the player cancels it OR the player dies OR the enemy dies. The main challenge of the TAS is to manipulate the auto-fight to produce long sequences of successful turns in order to end bosses quickly. The only common item worth using is Silph Wing. Silph Wings allow exiting caves and teleporting to previously visited towns. However, the overworld is so small that even the Silph Wings are worth using only 5 times. One Rune is needed to advance the plot. It is fastest to get it as an item drop from a random encounter. (By the way, go to VGMAPS or GAMEFAQS for a good overworld map of the game.) Here is the route plan:
First rename the three main characters to save text scrolling time:

El --> A
Kishe --> B
Uranus --> J
(Maybe use different names for luck manipulation?)

Talk to Zodia
Equip sword (Timing of this event is used for luck manipulation.)
Get random encounter: Harpy
Kill Harpy to get EXP. and an item drop: Silph Wing
Get Lete Water

Go to Town of Arrow (Lete Water is required to enter)
Boss: Jabba

Buy 4 Silph Wings
Get Medicine

Go to Remlia
Use Medicine, get B to join
Talk to shrine master

Go to Mt. Palo
Boss: Devil
Use Silph Wing #1 to exit

Get random encounter: Lich
Kill Lich to get item-drop: Rune

Go to Remlia
Talk to another shrine master to get Pass
Give Pass to B (otherwise character A runs out of item slots later)

Visit Harappa (get in and out)

Go to Magan tower

Get three random encounters for these three monster types and make them join by letting B talk to them:
1. Cancer
2. Golem
3. Wings

Get Light Charm (+1 strength)

Enter menu: Use Light Charm, summon Cancer, summon Golem, summon Wings

Boss: Minotaur (LET B DIE HERE TO AVOID HIS LEVEL-UPS!)
Talk to woman
Use Silph Wing #2 to exit

Go to Ramuh
Get Sol ring (allows talking to animals)
Use Silph Wing #3 to warp back to Harappa

Enter Harappa
Talk to a duck to get Black Key

Go to Zord Nest (Black Key required)
Mini-boss: Zord P
Mini-boss: Zord H
Boss: Buster
Talk to J

Go to Harappa
Get J to join the party
Use Silph Wing #4 to Ramuh

Go to Tilmun
Talk to two people (to advance the plot, a dolphin is now available)
Get Arce Sword to advance the plot (it just happens to be a good weapon too)
Ride a dolphin into the cave of Orthrus

Boss: Orthrus (Maybe we can let Cancer, Golem and Wings die here, because they deal almost no damage at all on the later bosses?)
Give Rune away (to advance plot)
(Maybe talk to Orthrus to make it join the team? Orthrus seems useful only for the next boss though.)
Exit the cave onto the small island.

Enter Menu: Summon Orthrus, Equip Acre Sword, Use Silph Wing #5 to Tilmun

Go to Sage Mountain
Get Emblem

Ride another dolphin to Zord Castle (Emblem is needed to enter)
Boss: Morgan (It is probably worth it to let Orthrus die here.)
(On level-up, maybe give J a point intelligence, IF it increases her chance of success, when talking to Bones?
Choosing intelligence wastes 2 frames though, so it may not be worth it.)

Go to Atlantis
Talk to shrine master
J talks to Bones (to skip a battle)
A talks to Bones (to skip another battle)
(The second battle needs no intelligence, because it is skipped due to one instance of Bones already being  on the team.)
Get Jail Key (Give it to J, because otherwise A runs out of item slots later.)

Go to Dalo
Use Jail Key
Get Bard (Give it to J)

Go to Zord HQ (Bard is needed to enter)
Get Photonsword
Equip Photonsword
Boss: Zodia (Let J die here!)
Boss: Memphist

Go to Crotona
Get Lapis

Go to Atlantis
Give Lapis to the man
Talk to the man again
Get the flying ark

Fly to petroglyph
Boss: Vaerial

Fly to Luciferium
Boss: Baal
Boss: Lucifer

THE END
This RAM address is related to the RNG: 0xff9c However, there is more to it, and I don't fully understand how the game works. I did discuss it with DarkKobold (thanks DK!) more than a year ago, but I guess we both had more interesting stuff to do and this got forgotten. Here are some helpful scripts: http://aqfaq.webs.com/get-stats.lua http://aqfaq.webs.com/auto-level-up.lua http://aqfaq.webs.com/equip-sword.lua Anyone interested in TASing this or helping with the RNG manipulations? No, not you Bones!
NitroGenesis
He/Him
Editor, Experienced player (550)
Joined: 12/24/2009
Posts: 1873
I'm very interested in TASing this. I want an RPG to do. I think it would make my TAS skills better.
YoungJ1997lol wrote:
Normally i would say Yes, but thennI thought "its not the same hack" so ill stick with meh.
Editor, Expert player (2457)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
Hi NitroGenesis! (Sorry for the late reply.) Nice to hear that you are interested. The project is nearly dead for me, because I have no idea how to build a script for manipulating the battles. This script that inserts idle frames and prints the relevant battle results is the best I can do currently (it prints hit points, and how many frames were idled before autoing, and what is the total frame count for the autofight streak before somebody important got 0 HP; if I remember correctly, the script was based on some Shining in the Darkness script by DarkKobold):
-- Start the script when the cursor is on "autofight".
-- Fastforward is recommended, when the script is running.
-- (In this variant, B's HP is not monitored, because he's dead.)

Battler = io.open("C:\\battler.txt", "w")
S = vba.framecount()
iterations = 256
CHECK = savestate.create()
savestate.save(CHECK)
for Cnt = S,S+iterations,1 do
savestate.load(CHECK)

while vba.framecount() < Cnt do
emu.frameadvance()
end

while vba.framecount() >= Cnt
and memory.readbyte(0xc587) > 0 --A's HP
--and memory.readbyte(0xc5cb) > 0 --B's HP
and memory.readbyte(0xC653) > 0 --Cancer
and memory.readbyte(0xC697) > 0  --Wings
and memory.readbyte(0xc6db) > 0  --Golem
and memory.readbyte(0xc93f) > 0 do --Boss
joypad.set(1,{A=1})
vba.frameadvance()
end

Boss = memory.readword(0xC93f)
A = memory.readbyte(0xc587)
--B = memory.readbyte(0xc5cb)
Cancer = memory.readbyte(0xC653)
Wings = memory.readbyte(0xC697)
Golem = memory.readbyte(0xc6db)
outs = string.format("%d %d %d %d %d %d %d\n", Boss, A, Cancer, Wings, Golem, Cnt - S, vba.framecount() - S)
print(outs)
Battler:write(outs)
end
This is good for doing a few hundred rerecords per minute, but it is still a very clumsy tool. So, improving the script or improving the route are the things you could try anytime. RPG route planning is quite fun. :)
Joined: 1/29/2014
Posts: 4
I recently started reverse engineering this game. So far I've been able to determine that the RNG function is at 03DB and uses FF9C as its input. Each call to the function generates a new value for FF9C and keeps the random number in register a. I'm fairly sure the only thing that affects FF9C is when it gets incremented every frame. Therefore, the only way to change an auto battle is idling before pressing auto. The next thing I'm going to try to figure out is what determines random encounters. Almost every step on overworld seems to generate 2 calls to the RNG (seems like there's a built in no random encounter for about 5 steps after leaving town or a battle) but I'm fairly sure that the coordinates also play a factor. I would be glad to have some help, so please reply here or PM me if you're interested in helping work on this game. PS: In the event I give up on this and you're reading this several years later. STILL CONTACT ME. I've been fascinated with this game for nearly a decade already, chances are no matter how many times I start/give up reverse engineering it I'll still be interested in starting it again. PPS: I can't seem to get the movie file posted above working, can anybody else?
Editor, Player (94)
Joined: 5/27/2006
Posts: 239
i did a test run of this on the japanese version out of boredom but it's not that great. i'm not really sure of the optimal route or if any monsters should be recruited. as for rng, i think you'd be better off writing a script to brute force walking on the map and optimizing battles. also random question, by reverse engineer do you mean look at the asm/disassembler? i've never known how to do that or what program to use.
Skilled player (1703)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
BioSpark wrote:
also random question, by reverse engineer do you mean look at the asm/disassembler? i've never known how to do that or what program to use.
Try looking at http://tasvideos.org/ReverseEngineering.html
Joined: 1/29/2014
Posts: 4
There's a TAS route planned out above, not sure if it's 100% optimal but looks pretty solid. A TAS probably wouldn't have much entertainment value, except maybe to the few that have played it or just really enjoy RPG TASs. You're probably right that for the purposes of TASing I'm better off brute forcing walking across the map. However my personal reasons for getting involved with this game are more around 100% understanding of the code with the goal of either creating cool hacked roms of the game or a very faithful reproduction of the game than doing a TAS. Of course I'm still going to do a TAS but since my priority is understanding the code, for me personally, brute forcing is not the best option. For reverse engineering, the best tools I've found so far are BGB, Bizhawk, and GBRead. It's a very slow and very painful process for someone that has never done assembly before. For example, locating the RNG function took about an hour and I spent probably 8 hours or so trying to completely understand the 29 lines of code it has.
Editor, Expert player (2457)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
Ouroboros2Grace wrote:
I can't seem to get the movie file posted above working, can anybody else?
I can run it just fine. Emulator: VBA-rerecording-v22 ROM: Revelations - The Demon Slayer (U) [C][!].gbc Nice to see some action in this thread.
Joined: 1/29/2014
Posts: 4
Aqfaq wrote:
Ouroboros2Grace wrote:
I can't seem to get the movie file posted above working, can anybody else?
I can run it just fine. Emulator: VBA-rerecording-v22 ROM: Revelations - The Demon Slayer (U) [C][!].gbc Nice to see some action in this thread.
Thanks for posting the emulator version. Got it to work now. Looks like a really solid route. There's not too much room for improvement. I'll see if I can make a script that does the battles. I'll be honest though, probably going to take a few months. Will post back here when I have something to share.
Editor, Player (94)
Joined: 5/27/2006
Posts: 239
i'd suggest using the japanese version. the text scrolls a lot faster. though i guess it's not a huge deal. as for recruiting monsters, i don't remember much about the monsters listed in the route, but in my test run i recruited the two monsters with a spell that boosts your strength. not really sure if it's worth it.
Editor, Expert player (2457)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
BioSpark wrote:
in my test run i recruited the two monsters with a spell that boosts your strength. not really sure if it's worth it.
Interesting idea. I may have overlooked things like this, because to me it seems that every extra action takes too much time, because the menus are so slow. If the Japanese menus are significantly faster, then the best strategy might be different for each game version.
Pokota
He/Him
Joined: 2/5/2014
Posts: 778
Found this TAS by AvariceLank; I've asked the uploader for an input file. The dominant strategy in this one was to attack every time except for when Holy or the Fire Staff were more efficient. Final time came out to 1:11:5, but it can be improved further. Copy-pasting my yt comment.
Faster to guard than to attack for 0 (You do this late in the run but not early) Superficially there's no real need to pick up the Alpha Sword since Kishe's using Holy 3 all hours of the day; would need to compare HolyGuard actions vs HolyAttack. Solion isn't doing enough damage from direct attacks to justify not using Holy 2 (could save a half-turn because of speed) I seem to remember one of the forced battles had an enemy that was susceptible to Curse, of all things, so that needs testing as well. I want to say putting a little more speed onto Kishe will pay off once you have Offense Up since that way his spell's going off before physical attacks do. Since Kishe is using Holy 3 almost exclusively once he gets it putting points into strength is wasted.
And of course as I was posting to this thread he replied to my comment saying he was thinking of submitting so I directed him to this very thread.
Adventures in Lua When did I get a vest?
Active player (405)
Joined: 2/5/2012
Posts: 1677
Location: Brasil
is this slower than the old tas by aqfaq?i don't get it
TAS i'm interested: megaman series: mmbn1 all chips, mmx3 any% psx glitched fighting games with speed goals in general
Pokota
He/Him
Joined: 2/5/2014
Posts: 778
Welp, that's what happens when you don't look up.
Adventures in Lua When did I get a vest?
Pokota
He/Him
Joined: 2/5/2014
Posts: 778
So it turns out fusion in this game only lets you go two levels above player level, but recruitment lets you go five levels above player level. Unless you specifically want to get a Fusion Accident (which subsequently can't be re-fused) you don't actually benefit from it.
Adventures in Lua When did I get a vest?