Posts for Silas

Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
I just came back from a very long pause. I didn't progress at all on the game. I'm very happy that DonamerDragon worked on it, as I would not achieve what he has done with it, even with a lot of time and patience. Now that I have some time, I'll try to fetch ingame information (memory offsets or things to help others anyway) for other games to try to motivate TASers to do games that aren't done yet. Good job DonamerDragon
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
Grats on the run! It's pretty close to perfection. Better than this would be to try to duplicate it while trying to save a few frames here and there (and there's not much to be saved). I'm impressed by the battle manipulation you managed to do. The mimics capture were both impressive, the first one had 4% to be captured with the herb and the second one had 5% with the meat. Good job manipulating the maps, and I do know how hard this could have been (did you build some tools to do it or did you do it manually(!)). You did a very good job at destroying the game. I'm happy I could be of some help with the memory addresses. I'm even happier to be able to see your run.
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
For my the first wip, I was beginning to learn how to manipulate the battles and maps. By the end of the first wip, I was manipulating the maps to get trainers and food. I also manipulated the luck a bit for the monster catching and a bit with massacre. Anyway, I'm still very far from being able to do a publishable quality run, but I plan to release all the tools I will create, and the run can be useful if someone else want to do a higher quality run afterward. Hopefully, I'll catch up the previous wip with the new vba soon. Edit; Btw, my latest version for the map looks like this: http://pages.infinit.net/silas/dwm/mapviewer.jpg I'm trying to fetch the exact position of the portal. I fetched a couple of values relating to the portal, but nothing yet with the position. Oh well, let's try harder...
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
I don't have any estimate yet, but seeing that I don't have to level too much and that I manipulate maps at will, it will be way below 5hrs... Probably the 2h isn't too far fetched. Might even be below that... Prepare yourself to see a lot of trainers, ribs and sirloins, and a lot of 1 room maps. Small question, is the bard trainer worth it? I can get one on demand, but I don't know if the +20 to the lowest will mean something if I change often of monsters with the trainers.
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
It's nice to see that there is some interest in the game. I'm currently redoing the tool with something which could be given to others in script/source code. It's going well. I had to restart my run because of the new VBA version, but I'm still trying. I've also did a script to see all the available maps before going in a portal. It takes me about 1/2h per portal to manipulate, but it's worth it. With this, I'm able to get Foreign Masters as soon as Villager's or Talisman's gate. The probability is really low (about 5%) but since it's controled... That way, I can get a Spotking. My problem right now is controling battles (I'm trying a script to get min/max damage, but no luck yet) and getting enough food without taking too much time. I can control luck for catching a monster a little, but foreign master's monsters need a lot of food to satisfy. Foreign masters seems to be the way to go to level easily, catching 3 monsters from them and the next monsters that can be caught will be on average 6-7 levels higher. Even though it would be fun to have a gold slime, I'm thinking it's leveling too slowly to be of some use. FrostyTheDragon is way ahead of me in the thinking of what monsters is good to finish the game. He might not include the foreign masters in his strats. My idea right now would be to manipulate maps to get the meat and trainers and catching up to a metal king with 2 other lvl 50 monsters. What will take time will be to check different options and paths to see which is the best. Let's hope we have some feedback by others who are interested in the game.
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
About the apprentice level and stats in 7th, once it joins the team, new stats will be gained by the same formula as the main caracter, but he will keep the stats from the previous boosted formula. If I remember well, getting a character, leveling, changing character, geting it back after a level or two and it was boosted. My mind might be playing tricks on me, but I know for sure that any level gain within the party give stats using the low american formula, and level gains away give stats using the high original formula. Have yet to prove if leaving a character and getting it back after one level or two would give all the stats that were lost using the "in party" formula.
Post subject: Update on the program
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
I've managed to get if a trainer is on the map and where. I've also got all the items and their relative positions on the map too. Haven't found the type of trainer on the map, coming soon. What could be the next step? Should I release the prog as it is or try to get the full map graphics? For the fun, here are 3 screenshots with the new features http://pages.infinit.net/silas/dwm/2-battle.jpg http://pages.infinit.net/silas/dwm/2-map.jpg http://pages.infinit.net/silas/dwm/2-map-2.jpg I haven't progress on the run (since it's not competitive, but more to test the program). Frosty: I'm relieved that you are still trying to speedrun the game. Your run will probably be the major reference if a tas is done. Also, thanks for your team formations, they will help me greatly if I ever try to get a higher quality run. I'm still far behind with this thinking in mind. (I'm still trying to find out if I'll be able to get a GoldSlime only with trainer monsters and if it's a good monster to have) Might be if I can level it with a couple of trainer's metabble or metalking (?)
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
I managed to find the way to make the tool stable. It's kinda funny to hack a program with the source code. Gameboy Games (and GBC too) use 16 address maps of 4096 bytes (1000 hex), from 0000 to F000. This address map array allows direct access to all of the data used by the game. This array is located at address 7579680 (0x73A820). Every 4 bytes is a pointer to the real address in memory. I'm pratically sure it's the same address for all the GB and GBC games. This mean that the C000 and D000 address in memory can always be read from 0x73A850 and 0x73A854. What's the use of this??? For DWM, this means that I don't have to search for addresses anymore. The tool is now stable and could be used anywhere as long as it's the same version of the VBA running. So, I only have to check if I can give the program here, if I need to provide source code, if I need to code it in a different language and things like that. I'm now adding features while checking how I can give the tool. Features I have now: -Allies and Enemies Battle Stats -Current Map layout -Current Map Enemies and stats -Steps before next battle -Min and Max normal damage done -% to catch a monster -Foreign trainer kind if it appears on the next map I'm trying to find the addresses for the positions and kind of items and trainers the map.
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
I tried my own little attempt at it. Here's my WIP up to class F beaten: http://dehacked.2y.net/microstorage.php/info/4873/Dragon%20Warrior%20Monsters%20%28US%29.vbm I don't have anywhere near the skills or patience to do a perfect run, but I hope it can help to do a good run later. After that, trainers start to appear, so I'll try to get a lower level monster to be able to get a male spotking from a trainer. After, I plan to get a lava man and ice man for a female gold golem to breed a gold slime (to have at least a rare monster I guess).
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
I tried to go for a run of the game, but I still have a lot of catch up to do with quality and it's still at the beginning. Still trying to make a good tool to help. I've done 2 screenshots of it, in it's current state. Perhaps to give ideas to others or inspire some other programmers to help TASers. If I can make it good enough (that don't require to search the main addresses), it might actually be useful. http://pages.infinit.net/silas/dwm/1st.jpg http://pages.infinit.net/silas/dwm/2nd.jpg
Post subject: Memory mapped VBA for gameboy games
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
I'm trying to create a viewer/helper for an original Gameboy game. I'm doing it for dragon warrior monsters right now to help in a possibly future TAS. The problem I have is that I can't release any tool since the memory locations always change when VBA is restarted. I can find the address in a memory searcher and view them with "game trainer" functions, but it's unreliable. I tried to use a file mapping like it was used by Hoe for Castlevania Aos (http://tasvideos.org/forum/viewtopic.php?t=2751), without success. It would be the best way to do it, if it worked. My problem is that the FileMapping "feature" is only done for the Gameboy Advance games. Could it possible to add this feature for Original Gameboy games too? I've tried to add it myself (that's how I noticed it's only for gba games), but I don't have the tools to compile it and it's a bit more than I can handle.
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
Alright, here are some of offsets (for the memory viewer). Map C940 -> C94F Current Position C925 Portal position -> C960 Current map level C939 (0 based, so for the real number +1) Number of levels C93A (last is the boss, so for the real number -1) # of steps before the next battle CA3A Note Mountains = 1 step, Forest = 2 counted steps for 3 walked steps, Plain = 3 counted steps for 5 walked steps Foreign Trainer I don't have much info, but addresses C92D will be 0 for soldier, 4 for monk, 5 for mage, 6 for bard and 7 for shop. Address C92E will count the number of steps required (200) to set C92D to 7. Will enemy join Friendness DB83 (starts at 10, increase with items or healing up to 1600) (2 bytes) Difficulty to befriend DB85 (0 = always join, 7 = never join) The formula is a bit harder to describe, I could try to formulate it if required. Other stuff Gold CA4B Classes done CAB4 (G = 1,F = 2,E = 3,D = 4,C = 5,B = 6,A = 7,S = 8) Battle information Everything start at DB9B Order Level of ally 1, Level of ally 2, level of ally 3, level of enemy 1, ... Then Hp of ally 1, Ally 2, etc. Values to be found there Level, Current HP, Max Hp, Current Mp, Max Hp, Str, Def, Agi, Int, Wild For the kind of monster it is in battle DC3C In Battle Skills starts at DC65. Skills are one after another, then go to the next monster. Feel free to add any other discoveries...
Post subject: Japanese website with a lot of information
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
I've found a japanese website with a lot of information. Yet, babelfish can only go halfway... Perhaps someone else who understand this can put this info to good use. Inside: - Map generation - Portals randomization - Battle calculation - Foreign master appearances calculation - Enemy appearance chart - The way critical strikes are calculated etc. http://www.geocities.co.jp/Playtown-Dice/6769/dqmon/ With this information, someone could create a very nice viewer which could show the information at any moment (every frame). I've started mine, but I can only have hp,mp, stats and skills yet. --------- Update: I managed to get the maps layout, current position and portal position. I've made a small viewer, working, but not perfect yet. Trying to locate items and foreign trainers now. Findings: I don't know if any of this makes sense for anyone else... The offsets are moving everytime the emulator is closed/started. Using an outside memory viewer, I start by finding the hp in battle (monster #1) and the map starts 87485 bytes (155BD in hex) after that offset. Current position is 27 bytes before the offset, and portal position is 32 bytes after the map start offset. It's a value between 0 and 15 (F). The map is 16 bytes long (4 x 4). In hex, the first part of the byte serves for map type (the value must be divided by 16).
0x ┼  1x ┬  2x ┴  3x ├

4x ┤  5x ─  6x ┌  7x ┐

8x └  9x ┘  Ax │  Bx ↓

Cx ↑  Dx →  Ex ←  Fx (nothing)        
Sample: Current Pos: 8, Portal Pos: 5, Map: 60 70 60 70 30 40 30 40 30 40 30 40 80 22 23 90 would give
 ┌ ┐ ┌ ┐ (6x-7x-6x-7x) 

 ├(┤)├ ┤ (3x-4x-3x-4x) (Portal Pos)

[├]┤ ├ ┤ (3x-4x-3x-4x) [Current Pos]

 └ ┴ ┴ ┘ (8x-2x-2x-9x)
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
I haven't found the code for the fceu yet for the luckbot, so I guess I'll try to make an external one to begin with. I haven't forgotten or given up on you adelikat...
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
Ok, perhaps the bot will be the best if I don't have to analyse all this nes code. I'll have to get a couple of things before working on this (mostly getting the latest bot's code and a lot of testing on my side). Still, Bisqwit's code is easy to follow and with the fceu's functions, it'll be better than what I wanted to do first. At first, I wanted to build an external program which peeks in the emulator's memory and gives results depending of the frame. I've already did this for a lot of games for me to get values. Edit: I could also try to build an external "player" that peeks the game and pushes the buttons. Good part, it could be customizable for other games / emulators, bad part, it would be slower to run than from the emulator. (that's unless bisqwit's bot is external to fceu and that I'm clueless about it...)
Experienced Forum User
Joined: 10/8/2005
Posts: 16
Location: Quebec, Canada
I could help with or do the programming if needed (if you say you already got the ram offset and values, I think it would be pretty easy to do). What do you actually need? Something to play the game until a critical hit or two is done (bisqbot) or something that will tell you which button to press and when to get a critical (easier to do)?