Post subject: [Video Request] Dragon Warrior Monsters 2
Joined: 9/28/2008
Posts: 12
I have checked the movies, and there is only a TAS for Dragon Warrior Monsters 1. http://en.wikipedia.org/wiki/Dragon_Warrior_Monsters_2 If someone makes a video for this game, could you please make it for Cobi's Journey? I have that version, not Tara's Adventure.
Post subject: Dragon Warrior Monsters 2 (need help with glitches)
Player (164)
Joined: 4/14/2012
Posts: 25
Location: Japan
I've been making DWM2 TAS and find a glitch that can call debug mode. We can go straightly to ending credit from the debug mode. But it's uncontrollable for me. I once succeeded to go debug mode, when i had tested it. However, I couldn't reproduce it... and i don't have enough knowledge to analyze such a complex thing. It would be highly appreciated, if someone help me with analyzing and utilizing the glitch. This glitch seems to work only on Iru(Tara) version of Japanese version. I used two glitches to make the glitch. 1. Cloakroom bug (預かり所バグ); It's fixed in USA version. It's known as Cloakroom bug in Japanese DQ sites, because the cloakroom is the most known place where we can do the glitch. Where a person is next to a door or a well or a stair, then press A repeatedly in entering. The conversation will start before the map loading. The map ID will change to the next map, but the internal map is same as previous map. So, we can go where we can't go originally. We use the glitch here. the glitch is used at 0:54 of this tool-assisted movie. http://nicoviewer.net/sm17803880 2. Scrolling bug; I used this, when I succeeded to go the debug mode. but it might not be needed for the glitch. Before when we go down and the screen is scrolling, press up and down. then the character's location will slide out the half of the grid and we can go where we can't go originally. the glitch is used at 0:48 and 4:07 of this tool-assisted movie. http://nicoviewer.net/sm17803880 OK. Now, I explain the main glitch. 1. Start the game and proceed scenario We're asked to go to the cloakroom to take her grandmother's handmade pie. After taking the pie from the clerk and going out from the cloakroom, Warubou and the prince will prevent the way. go down and talk with Warubou. then go right and talk with the prince and Warubou. Warubou try to grab your pie. 2. Scrolling bug after Warubou and the prince went into the well, we ignore the well and go right to the next floor. then, go up to the next floor and do "scrolling bug". then come back to the well. It would be skip-able... 3. Cloakroom bug Entering to the well from the upper with pressing A repeatedly. If the glitch is succeeded, the screen will remained to be white. After finishing the conversation, go right till the x location is 90h. When we used scrolling bug, we need to go up 1 grid before going right. 4. press right. then the charactor moves and the game will be bugged after many lags. In many times, it just freezes. Sometimes it returns to the title with bugged graphics. and i had come accross to the debug mode at once... The result will be different by the frame of pressing right and the input before the freeze/restart/debug launch. the RAM seems to be filled with junk data. I think when we could fill address C5DB with 00h and avoid freezes, it will work. but i couldn't find any regularity and I'm tired of hundreds of trial. It often freezes. It would be cool, if someone can find out how the glitch works. Thanks for reading this long composition. data: debug mode flag: C5DB 00h= debug mode FF8F, FF90, FF92: MAP ID FF8E: X location of the charactor FF91: Y location of the charactor Movie file till before the last step of the glitch. (works on a proper dump of Dragon Quest Monsters 2: Iru no Bouken (J)): http://dehacked.2y.net/microstorage.php/info/1046937017/DQMiru-bug.vbm Lua script to show the MAP ID and character's location. http://www.mediafire.com/?f4bujbdudnz971e My DQM2 Testrun movies (no glitches) http://nicoviewer.net/search?cx=partner-pub-9766425680241064%3A0803841926&cof=FORID%3A10&ie=UTF-8&q=DQM2+tas&sa=%E6%A4%9C%E7%B4%A2&siteurl=nicoviewer.net%2F&ref=nicoviewer.net%2Franking%3Fc%3Dg_culture2
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
I can try once I'm back from school. What VBA version did you used? Edit: One more thing, How does the debug menu look like?
Player (164)
Joined: 4/14/2012
Posts: 25
Location: Japan
jlun2 wrote:
I can try once I'm back from school. What VBA version did you used? Edit: One more thing, How does the debug menu look like?
thanks in advance for analyzing. :) VBA version is VBA-rr v23.5 svn421. the debug menu is like this. but, on launching the debug from field or somewhere else, the graphics of the letters are broken. we need to press up and A to choose "-RETURN-" to re-launch debug. then the graphics is fixed like this.
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
I tried both not using the scrolling bug and using the scrolling bug, but both gave me alot of opcode errors which turns off the game, so I switched to vba-v24m-svn422 (which doesn't shut the game off in a freeze) and resynced the run. I hope you don't mind. Also, I came up with this result. The "Debug Mode Flag" is 0, and you can press A,B,Up,Down to hear something that sounds like menu scrolling, but I'm not sure if it's really the debug menu.
Player (164)
Joined: 4/14/2012
Posts: 25
Location: Japan
jlun2 wrote:
I tried both not using the scrolling bug and using the scrolling bug, but both gave me alot of opcode errors which turns off the game, so I switched to vba-v24m-svn422 (which doesn't shut the game off in a freeze) and resynced the run. I hope you don't mind. Also, I came up with this result. The "Debug Mode Flag" is 0, and you can press A,B,Up,Down to hear something that sounds like menu scrolling, but I'm not sure if it's really the debug menu.
thx for checking. i don't know if vba-m is ok for submission though, it would be better for checking and analyzing. the freezes and errors are nasty Too bad thing is that it seems to be bad. we can't go debug. :( after many frames, the flag changed again. It looks like there are 2 points, when junk data are written, and the later point seems to be important. when i cheated the flag at the 2nd point, the debug launched.
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
tetora_X wrote:
thx for checking. i don't know if vba-m is ok for submission though, it would be better for checking and analyzing. the freezes and errors are nasty Too bad thing is that it seems to be bad. we can't go debug. :( after many frames, the flag changed again. It looks like there are 2 points, when junk data are written, and the later point seems to be important. when i cheated the flag at the 2nd point, the debug launched.
Can you please tell me the address for the 2nd point? Also, how did you know when it can't go to debug? Will this movie work? Edit: Oh, and vba-m is ok for submission, since I submitted 3+ movies with it, and they got published.
Player (164)
Joined: 4/14/2012
Posts: 25
Location: Japan
jlun2 wrote:
Can you please tell me the address for the 2nd point? Also, how did you know when it can't go to debug? Will this movie work? Edit: Oh, and vba-m is ok for submission, since I submitted 3+ movies with it, and they got published.
I meant the 2nd time point. After frames from the time when junk data is firstly written, junk data is written again. >Also, how did you know when it can't go to debug? i couldn't launch debug by pressing buttons. >Will this movie work? no :( even the flag is 01h -> 21h -> 40h. i don't think the weird sounds are related to debug. when we enter there with cheat code(0100DBC5), there is only normal BGM.
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Sorry to bump this, but are there addresses outside the lua scrpt posted for this game? D8BF - HP D8C1 - 2nd monster HP D8C3 - 3rd monster HP but I'm having trouble finding the addresses for the NPCs. Edit: HP D8C7 D8C9 D8CB Max HP D8D7 D8D9 D8DB ?? Also, is there a longer writeup of the current route? It's rather hard to follow. If the debug menu is triggered, going to battle with debug set to "Auto" gives you very powerful monsters Warping to the last area using debug allows you to fight the final boss. If 0xCBF1 is set to 0xF (or bit 1: 0000 0010), the ending gets triggered as soon as you reach the top of the tree. C920 is game script: I can trigger the ending & update the island by setting it tp 5F, then C5DC to 1. This won't set boss flag however. I can also trigger the boss remotely: C91A - needs to be changed?? C91B - needs to be changed?? C91F - ??? needs to be 1?? C920 - C922 - ID? C923 - "action" (eg. 3 triggers battle if exists, or closes dialogue) Changing it to right before the "THE END" screen pops up won't let you save normally, so 5F prob be the best bet for GEG. From discord, by casualpokefan:
i found 2 rng bytes at cd03-cd04, with yet again another LCGRNG, with the formula seed = ((seed * 5) + 11) mod 65536
CB50-CBA0 are npcs The addresses below are story flags?
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
https://www.speedrun.com/dqm2/full_game#Any_Glitched1 Can someone please help me find information on this? The RTA runs are 35 minutes long; it reaches the end of pirate world, then final boss. I don't understand how? They seem to trigger some bug 19 minutes in (after desert world), then get level 55 monster. Then they warp to pirate world to recruit NPCs, before going to final boss. Edit: Save and reset at 1st frame of lag gave this: Edit2: 1. recruit 3 npcs 2. save bug (journal then reset on 1st lag) 3. drop off 00000 the RTA somehow then gets final world key. If I saved, I get this: Which is super OP. Edit3: 1. go through up to 1st monster as normal 2. talk to father for PorkChop 3. saved at desert entrance 4. CactiBall appeared. Recruited 5. saved again 6. reset 7. CactiBall now 00000 8. buy exit bell/warp wand (or manip via overworld) 9. glitched to beaver 10. worm appeared. recruited 11. beaver boss. 12. proceed normal as TAS 13. lamp boss. your slime defeated. lamp defeated. recruit lamp; place them to farm 14. back to oasis 15. back to well 16. spooky appeared. spooky recruited. deposit to farm 17. exit bell get (dont need if obtained in overworld) 18. madcandle appeared (where beaver was). recruited as 3rd npc 19. spottedslime appeared. recruited. deposit to farm 20. snake appeared. snake recruited deposit to farm 21. beaver recruited. replace 3rd npc 22. warp wing back to greatlog 23. deposit snake (remember, it was duped by 0000). followers will now be 2 beavers. 24. deposit 1st beaver. followers will now be tombstone. 25. release in order, every npc in farm until 1 left. Screen should glitch mid way 26. Go to magic door, warp back to oasis to heal 27. Tournament for pirate key; OHKO everyone 28. Go to sea world. Buy 1 journal page for saving from the village 29. Leave village. Go to water, fight 12 NPCs (in groups of 3, make sure each is within 20 encounter steps away) 30. You should now have limbo key. Go to Limbo 31. Go to bridge in front of castle. Save using journal. 32. 1 frame before 1st lag of saving, reset. NPC should be gone 33. Final boss. Edit 4: http://tasvideos.org/userfiles/info/72122126885481104 ID is in C6FE. The glitched NPC id is 110. C73E is where keys are at. Getting XP with ID 110 increases C73E. C73F is where key ID is stored. 6 is Limbo. Thus 0x600 (00 06) XP, or 1536 is needed to get Limbo key. That's why the run defeats 12 npcs in pirate world.
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Data structure for CartRAM
Offset	Purpose
0	??
1	Name 1
2	Name 2
3	Name 3
4	Name 4
5	Name 5
6	Name 6 (Terminator Char F0)
7	??
8	??
9	??
A	??
B	ID
C	ID
D	Sprite (the smaller one when you click on them on stats)
E	??
F	Owner name 1
10	Owner name 2
11	Owner name 3
12	Owner name 4
13	Owner name 5
14	Owner name 6 (Terminator)
15	Owner name 7 (Unused)
16	Owner name 8 (Unused)
17	Owner name 9 (Unused)
18	Owner name 10 (Unused)
19	??
1A	Family tree ID
1B	Family tree male ID
1C	Family tree female type
1D	Family tree female type?
1E	Family tree male owner name 1
1F	Family tree male owner name 2
20	Family tree male owner name 3
21	Family tree male owner name 4
22	Family tree male owner name 5
23	Family tree male owner name 6 (Terminator)
24	Family tree male owner name 7 (Unused)
25	Family tree male owner name 8 (Unused)
26	Family tree male owner name 9 (Unused)
27	Family tree male owner name 10 (Unused)
28	Family tree female type??
29	Family tree female owner name 1
2A	Family tree female owner name 2
2B	Family tree female owner name 3
2C	Family tree female owner name 4
2D	Family tree female owner name 5
2E	Family tree female owner name 6 (Terminator)
2F	Family tree female owner name 7 (Unused)
30	Family tree female owner name 8 (Unused)
31	Family tree female owner name 9 (Unused)
32	Family tree female owner name 10 (Unused)
33	??
34	Special 1
35	Special 2
36	Special 3
37	Special 4
38	Special 5
39	Special 6
3A	Special 7
3B	Special 8
3C	??
3D	??
3E	??
3F	??
40	??
41	??
42	??
43	??
44	??
45	??
46	??
47	??
48	??
49	??
4A	??
4B	??
4C	??
4D	??
4E	??
4F	??
50	??
51	??
52	??
53	??
54	??
55	Status aliments
56	Level
57	??
58	Exp
59	Exp
5A	Exp
5B	HP
5C	HP
5D	Max HP
5E	Max HP
5F	MP
60	MP
61	Max MP
62	Max MP
63	Attack
64	Attack
65	Def
66	Def
67	AGL
68	AGL
69	INT
6A	INT
6B	WLD
6C	WLD
6D	Plus (you get higher plus for breeding)
6E	??
6F	Nature?
70	Nature?
71	??
72	Nature?
73	??
74	??
75	??
76	??
77	??
78	??
79	??
7A	??
7B	??
7C	??
7D	??
7E	??
7F	??
80	??
81	??
82	??
83	??
84	??
85	??
86	??
87	??
88	??
89	??
8A	??
8B	??
8C	??
8D	??
8E	??
8F	??
90	??
91	??
92	??
93	??
94	??
95	??
96	??
97	??
98	??
99	??
9A	??
9B	??
9C	??
9D	??
9E	??
9F	??
A0	??
A1	??
A2	??
A3	??
A4	??

This is related to the above bug; the data near C73E gets treated as this data structure, and the key just happened to overlap with XP.
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
I'm posting this here because why not. If not for the fact you need the Ice world completed to unlock the name christener, you could glitch your monsters to ID 116. Then rename your monster. This will set bytes up at 0xEAC5 - 0xEAC9. Then you release a monster to decrease your follower id to 115. Then go back and rename to affect bytes 0xEA20 - 0xEA24. Repeat this for groups of 5 bytes for payload. Unfortunately, you're blocked by a guard until you get the sky key, and if you save/reset to remove him, your payload goes away. A TAS that really wants to do a game end glitch route could probably do what the current save glitch run does, except instead of getting the Limbo key, grab the Ice Key, then use your super powerful follower to sweep through the ice world to unlock name christener.
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
I've been investigating on an improvement of the glitched run: 1. I tested the U version. Depositing Beavern gives an ID of 51 rather than 117, making it useless. 2. While testing on U, since I lack access to the cloakroom bug, I had to think of a different way to beat Oasis. Using save/reset bug, I can clear out the guard blocking the well, along with the guard blocking the castle. I must save after fighting Beavern however, or the flag for beating them won't get saved from reset. 3. I need to investigate if it is faster to get Ice/Sky key via bug, then use the NPCs there to get Limbo key. They give more XP than Pirate world, so might be less fights. 4. Jumping to WRAM can result in a safe return using the following opcode: CC EF 01. That's 126,924 XP however, so I'm not sure how to get that faster than just beating the final boss. 5. Assuming I somehow get an ID of 117 in U, I tested using the nickname changer to get a payload. IDs 109, 110 name corresponds to items in storage. The J character set corresponds to every single item except for the following:
SkyBell		Snaps a monster out of confusion.
SageRock		Restores HP of all monsters bt 60~70.
WorldLeaf		Revives a dead monster.
ATKseed		Raises ATK by 3.
DEFseed		Raises DEF by 3.
AGLseed		Raises AGL by 3.
INTseed		Raises INT by 3.
LifeAcorn		Raises max. HP by 5.
MysticNut		Raises max. MP by 5.
Quest📚		Makes the reader braver.
Horror📚		Makes the reader more cowardly.
BeNice📚		Makes the reader more kindly.
Cheater📚		Makes the reader more sly.
Smart📚		Makes the reader more thoughtful.
Comedy📚		Makes the reader simple-minded.
BeefJerky		Tames monsters just a little.
PorkChop		Tames monsters a little bit.
Rib		Tames monsters a lot.
Sirloin		Tames monsters very much.
BadMeat		Tames a tiny bit, but also poisons.
MeteOrb		Tames monsters incredibly.
BeastTail		Checks if monster was caught before.
Repellent		Prevents monsters from appearing.
ShinyHarp		Attracts monsters when strummed.
Mist⚚		Prevents casting of spells.
Friend⚚		Doubles physical power of one.
This is why I wanted to try U. Their character set allows the stat boosters to be duplicate-able (change name to manipulate item storage, take out all items, repeat), so I can actually make a payload using stats. Unfortunately, none of the NPCs in Oasis and Pirate world seems to give me 117. 6. You can get 00000 into the farm by picking up another NPC:
deposit slot 0 monster you should now have 2 copies of slot 2 npc release slot 2 now you have slot 1 npc, which is 0 now pick up slot 0 monster, which will tell you to swap
6. Recruiting Giant Worm at level 1. You can still beat Beavern in 3 turns, and after the fight you still level to 8, but with 42 attack rather than 28. This would cost 600 frames of extra level up messages, and deals 44 attack to Lamp using critical. The current TAS has 2 extra encounters that makes me level 4, which allows me to deal 22 damage. I skip those encounters, so at level 3, I only deal 18 damage. This gives a total of 44 + 44 + 18 = 106 damage, which still isn't enough for 2 turn ko. Recruiting any time before the 1st reset is useless, since getting 0000 removes the other monsters. 7. KOing Slime at Beavern allows me to get Giant Worm to level 9 with 47 attack. This deals 46 damage to Lamp, but at the cost of making Slime unavailable for battle at level 1. 8. Setting fast text speed of 1 is the same as pressing A at the earliest frame possible for fights, so changing it after the lamp is pointless. 9. Going to the arena then losing is slower than going to the great log to heal by 68 frames. 10. It may be worth getting a monster on the way to the lamp instead of all 3 at once after the lamp, but this will desync the fight I had, so I didn't try. 2 Spot Slimes seems easier to obtain than 2 Cactuses. 11. Using Giant Worm special of BeastCut, despite the description of "Inflicts severe damage on the beast family.", is worse than Blaze using Mad Candle. Mad Candle's Blaze can be substituted for a critical hit during the Beavern fight, while BeastCut deals only 6 damage. 12. The best level to obtain Mad Candle is at level 4. This allows me level up to level 6, with 27 attack, just enough to 3 turn KO lamp. Level 1 and 2 gives me an extra level up message, while level 3 fails to get enough attack to 3 turn ko lamp. 13. Getting the giant worm at level 5 is the best if that was used to minimize level up message. 14. You could actually get to Pirate world early by save/reset away the person guarding the arena. The route: Recruit SpotSlime/Cactiball then save/reset. Get GiantWorm at level 1, beat Beavern to level 8 with 42 attack, then walk back to GreatLog, recruiting 5 more monsters on the way. Save/reset away guard, then beat tournament for key. Go to the 1st screen of Pirate World and get a Toadstool monster to obtain. Warp back to GreatLog to deposit them to get 117, then release everyone else to get 110. Not sure how the XP route afterwards. 15. I tried using commands at CurseLamp, but it failed because they disobeyed too often. I think it's a personality thing that could be manipulated. 16. The (U) version has different values when depositing monsters. So far I only managed to obtain 51 and 175, both of which are worthless. I am unsure if 117 is possible in (U). 17. Depositing a glitched SpotSlime as soon as you obtain it gave ID of 88. Depositing later gave 51. I do not know what influences this behavior. 18.
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Regarding the current 58 minute TAS: Improvements without save/reset: 1. The beginning sequence after getting the pie; talking to the pair blocking you near the well is faster than immediately after getting the pie. 2. I think the Beavern/CurseLamp fight can be improved by getting MadCandle or GiantWorm like the save glitch TAS, since they have higher attack, even without reset to dupe them. 3. Pirate world can save time by directly skipping to the final cave using Up/Down. 4. Every single random encounter could be skipped by pressing A to bring up the menu on the last frame of going on a tile like the current submitted save glitch TAS Save/Reset: 1. The Oasis route, following the current save/glitch TAS saves 1000 frames over cloakroom bug. 2. You can save/reset away the demon blocking you at the end at Sky World, skipping grabbing all 3 treasures. 3. You can save/reset away the guard at Limbo, skipping a fight.
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
This is my script I used to display stuff: Download dqm2.lua
Language: lua

memory.usememorydomain("System Bus") client.SetGameExtraPadding(0, 0, 117, 42) local dmw2_data = require 'dqm2 data' local text local read8 local read16 local read32 local frameadvance local Addresses = dmw2_data.Addresses local Monsters = dmw2_data.Monsters local Item_name = dmw2_data.Items local Skills = dmw2_data.Skills local Crit = dmw2_data.Crit local Map = dmw2_data.Map local Key = dmw2_data.Key local RNG_table = dmw2_data.RNG local Follower_Base = dmw2_data.Follower_Base function print_instr(Start, End_) local i = Start local opcodes = {} local current_num, current_op while i < End_ do current_num = read8(i) current_op = Gameboy.Opcodes[current_num] if Gameboy.One[current_num] then if current_num > 0 then opcodes[#opcodes+1] = string.format("0x%04X %02X %s",i, read8(i), current_op) end i = i + 1 elseif Gameboy.Two[current_num] then if current_num == 224 then opcodes[#opcodes+1] = string.format("0x%04X %02X%02X LD (FF00 + %02X), A", i, read8(i), read8(i+1), read8(i+1)) elseif current_num == 240 then opcodes[#opcodes+1] = string.format("0x%04X %02X%02X LD A, (FF00 + %02X)", i, read8(i), read8(i+1), read8(i+1)) else opcodes[#opcodes+1] = string.format("0x%04X %02X%02X %s%02X", i, read8(i), read8(i+1), current_op, read8(i+1)) end i = i + 2 elseif Gameboy.Three[current_num] then if current_num == 8 then opcodes[#opcodes+1] = string.format("0x%04X %02X%02X%02X LD (%02X%02X), SP", i, read8(i), read8(i+1), read8(i+2), read8(i+2), read8(i+1)) elseif current_num == 234 then opcodes[#opcodes+1] = string.format("0x%04X %02X%02X%02X LD (%02X%02X), A", i, read8(i), read8(i+1), read8(i+2), read8(i+2), read8(i+1)) elseif current_num == 250 then opcodes[#opcodes+1] = string.format("0x%04X %02X%02X%02X LD A, (%02X%02X)", i, read8(i), read8(i+1), read8(i+2), read8(i+2), read8(i+1)) else opcodes[#opcodes+1] = string.format("0x%04X %02X%02X%02X %s%02X%02X", i, read8(i), read8(i+1), read8(i+2) , current_op, read8(i+2), read8(i+1)) end i = i + 3 end end -- for j = 0, #opcodes do -- console.log(opcodes[j]) -- end return opcodes end if vba then text = gui.text read8 = memory.readbyteunsigned read16 = memory.readwordunsigned read32 = memory.readlongunsigned frameadvance = vba.frameadvance else text = gui.pixelText memory.usememorydomain("System Bus") read8 = memory.read_u8 read24 = memory.read_u24_le read16 = memory.read_u16_le read32 = memory.read_u32_le frameadvance = emu.frameadvance console.clear() end function display_item() local item = 0 local item_id = 0 local start = Addresses.Item_start for i = 0, 100 do item_id = read8(Addresses.Item_start + i) item = Item_name[item_id] if item_id > 0 then text(1,50 + (7*i), item) end end end function GetStats(o) npc1 = {} npc2 = {} npc3 = {} p1 = {} p2 = {} p3 = {} npc1.Level = read8(Addresses.NPC_Battle.Level1) npc2.Level = read8(Addresses.NPC_Battle.Level2) npc3.Level = read8(Addresses.NPC_Battle.Level3) p1.Level = read8(Addresses.Player.Level1) p2.Level = read8(Addresses.Player.Level2) p3.Level = read8(Addresses.Player.Level3) npc1.HP = read16(Addresses.NPC_Battle.HP1) npc2.HP = read16(Addresses.NPC_Battle.HP2) npc3.HP = read16(Addresses.NPC_Battle.HP3) p1.HP = read16(Addresses.Player.HP1) p2.HP = read16(Addresses.Player.HP2) p3.HP = read16(Addresses.Player.HP3) npc1.Max_HP = read16(Addresses.NPC_Battle.Max_HP1) npc2.Max_HP = read16(Addresses.NPC_Battle.Max_HP2) npc3.Max_HP = read16(Addresses.NPC_Battle.Max_HP3) p1.Max_HP = read16(Addresses.Player.Max_HP1) p2.Max_HP = read16(Addresses.Player.Max_HP2) p3.Max_HP = read16(Addresses.Player.Max_HP3) npc1.MP = read16(Addresses.NPC_Battle.MP1) npc2.MP = read16(Addresses.NPC_Battle.MP2) npc3.MP = read16(Addresses.NPC_Battle.MP3) p1.MP = read16(Addresses.Player.MP1) p2.MP = read16(Addresses.Player.MP2) p3.MP = read16(Addresses.Player.MP3) npc1.Max_MP = read16(Addresses.NPC_Battle.Max_MP1) npc2.Max_MP = read16(Addresses.NPC_Battle.Max_MP2) npc3.Max_MP = read16(Addresses.NPC_Battle.Max_MP3) p1.Max_MP = read16(Addresses.Player.Max_MP1) p2.Max_MP = read16(Addresses.Player.Max_MP2) p3.Max_MP = read16(Addresses.Player.Max_MP3) npc1.Attack = read16(Addresses.NPC_Battle.Attack1) npc2.Attack = read16(Addresses.NPC_Battle.Attack2) npc3.Attack = read16(Addresses.NPC_Battle.Attack3) p1.Attack = read16(Addresses.Player.Attack1) p2.Attack = read16(Addresses.Player.Attack2) p3.Attack = read16(Addresses.Player.Attack3) npc1.Defence = read16(Addresses.NPC_Battle.Defence1) npc2.Defence = read16(Addresses.NPC_Battle.Defence2) npc3.Defence = read16(Addresses.NPC_Battle.Defence3) p1.Defence = read16(Addresses.Player.Defence1) p2.Defence = read16(Addresses.Player.Defence2) p3.Defence = read16(Addresses.Player.Defence3) npc1.Agility = read16(Addresses.NPC_Battle.Agility1) npc2.Agility = read16(Addresses.NPC_Battle.Agility2) npc3.Agility = read16(Addresses.NPC_Battle.Agility3) p1.Agility = read16(Addresses.Player.Agility1) p2.Agility = read16(Addresses.Player.Agility2) p3.Agility = read16(Addresses.Player.Agility3) npc1.Intelligence = read16(Addresses.NPC_Battle.Intelligence1) npc2.Intelligence = read16(Addresses.NPC_Battle.Intelligence2) npc3.Intelligence = read16(Addresses.NPC_Battle.Intelligence3) p1.Intelligence = read16(Addresses.Player.Intelligence1) p2.Intelligence = read16(Addresses.Player.Intelligence2) p3.Intelligence = read16(Addresses.Player.Intelligence3) npc1.Wild = read16(Addresses.NPC_Battle.Wild1) npc2.Wild = read16(Addresses.NPC_Battle.Wild2) npc3.Wild = read16(Addresses.NPC_Battle.Wild3) p1.Wild = read16(Addresses.Player.Wild1) p2.Wild = read16(Addresses.Player.Wild2) p3.Wild = read16(Addresses.Player.Wild3) npc1.ID = read16(Addresses.NPC_Battle.ID1) npc2.ID = read16(Addresses.NPC_Battle.ID2) npc3.ID = read16(Addresses.NPC_Battle.ID3) p1.ID = read16(Addresses.Player.ID1) p2.ID = read16(Addresses.Player.ID2) p3.ID = read16(Addresses.Player.ID3) npc1.Skill = read8(Addresses.NPC_Battle.Skill1) npc2.Skill = read8(Addresses.NPC_Battle.Skill2) npc3.Skill = read8(Addresses.NPC_Battle.Skill3) p1.Skill = read8(Addresses.Player.Skill1) p2.Skill = read8(Addresses.Player.Skill2) p3.Skill = read8(Addresses.Player.Skill3) npc1.Target = read8(Addresses.NPC_Battle.Target1) npc2.Target = read8(Addresses.NPC_Battle.Target2) npc3.Target = read8(Addresses.NPC_Battle.Target3) p1.Target = read8(Addresses.Player.Target1) p2.Target = read8(Addresses.Player.Target2) p3.Target = read8(Addresses.Player.Target3) o = {[0] = p1, [1] = p2, [2] = p3, [4] = npc1, [5] = npc2, [6] = npc3} return o end function Get_Follower_Stats(Base) if Base < 0x203A then --It's still in CartRAM memory.usememorydomain("CartRAM") else memory.usememorydomain("System Bus") --since you're using WRAM as data end local o = {} o.ID = read16(Base + 11) o.Level = read8(Base + 86) o.Exp = read24(Base + 88) o.HP = read16(Base + 91) o.Max_HP = read16(Base + 93) o.MP = read16(Base + 95) o.Max_MP = read16(Base + 97) o.Attack = read16(Base + 99) o.Defence = read16(Base + 101) o.Agility = read16(Base + 103) o.Intelligence = read16(Base + 105) o.Wild = read16(Base + 107) memory.usememorydomain("System Bus") --set this back return o end local target = {[0] = "P1", "P2", "P3", "None", "NPC1", "NPC2", "NPC3"} local xp = { [9] = 89, --PearlGel [10] = 9, --Slime [11] = 102, --Healer [80] = 27, --Anteater [147] = 28, --Toadstool [316] = 148, --Petiteel [321] = 99, --Aquarella [322] = 155, --Merman [323] = 93, --Octokid [325] = 102, --Octoreach [332] = 111, --RougeWave [372] = 59630 --Darck } function display_crit(turns) local color = "white" local turn_index = read8(Addresses.Turn_index) local rng2 = read8(Addresses.RNG2) local text_x, text_y = 245, 0 text(text_x, text_y, "V: Crit:") local l_Crit = Crit if turns[turn_index+1] == 10 then --Hacky way to show Slime gets crit at these values l_Crit[25] = 128 l_Crit[32] = 128 l_Crit[74] = 128 l_Crit[76] = 128 elseif turns[turn_index+1] == 0 then l_Crit[25] = 0 l_Crit[32] = 0 l_Crit[74] = 0 l_Crit[76] = 0 else l_Crit[25] = 0 l_Crit[32] = 0 end local extra_rows = 157 --I want it to loop around to 0 after 127 without cutoff for i = rng2, extra_rows do if l_Crit[(rng2+(extra_rows-i)) % 128] == 128 then l_string = "Yes" color = "green" else l_string = "No" color = "white" end text(text_x,text_y+7*(extra_rows-i+1), (rng2+(extra_rows-i)) % 128 .." "..l_string, color) --I want to loop over -- text(200,text_y+7*(i/rng2), rng2) --cool effect lmao end end function display_recruit() local text_x, text_y = 0, 151 local id = 0 local color = "white" local index = 0 local amount = 0 --I loop 11 times --technically there's 30 slots, but the run doesnt even get that much --165 is A4, size of data struct for i = 0, 0x860, 165 do if read8(i,"CartRAM") > 0 then --monster exist. 1 farm 2 following id = read16(i+ 11,"CartRAM") index = (i/165) --so I can keep track where I am in terms of 1,2,3... if read8(i,"CartRAM") == 1 then color = "white" else color = "green" end if Monsters[id] ~= nil then if amount < 5 then text(text_x, text_y+7*amount, "(" .. id .. ") " .. Monsters[id], color) else text(63, 151+7*(amount-5), "(" .. id .. ") " .. Monsters[id], color) end end amount = amount + 1 end end text(text_x, 144, "Monsters:" .. amount) end --[[ ]]-- function display_followers() local text_x, text_y = 160, 0 local id = 0 local color = "white" local following = read8(Addresses.Followers) < 4 and read8(Addresses.Followers) or 0 --how many are following me local follower = {} --[[ 1. Loop through follower index 2. I have base addresses already. If I have over 49, then its WRAM 3. --]] for i = 1, following do if Follower_Base[read8(Addresses.Followers+i)] ~= nil then follower = Get_Follower_Stats(Follower_Base[read8(Addresses.Followers+i)]) if Monsters[follower.ID] ~= nil then text(text_x, (text_y + 42*(i-1)), Monsters[follower.ID] .. " (" .. follower.ID .. ") LV:" .. follower.Level) else text(text_x, (text_y + 42*(i-1)), read8(Addresses.Followers+i) .. " (" .. follower.ID .. ") LV:" .. follower.Level) end text(text_x, (text_y + 42*(i-1))+7, "HP:" .. follower.HP .. "/" .. follower.Max_HP .. " MP:" .. follower.MP .. "/" .. follower.Max_MP) text(text_x, (text_y + 42*(i-1))+7*2, "ATK:" .. follower.Attack .. " DEF:" .. follower.Defence) text(text_x, (text_y + 42*(i-1))+7*3, "AGL:" .. follower.Agility .. " INT:" .. follower.Intelligence) text(text_x, (text_y + 42*(i-1))+7*4, "EXP:" .. follower.Exp .. " WLD:" .. follower.Wild) end end end function display_battle(state) --[[Target 0 P1 1 P2 2 P3 3 None 4 NPC1 5 NPC1 6 NPC1 ]]-- local amount = read8(Addresses.NPC_Battle.Amount) local monsters = GetStats(monsters) local npcs = {monsters[4], monsters[5], monsters[6]} local followers = {monsters[0], monsters[1], monsters[2]} local follower_1 = read8(Addresses.Follower_index_1) local text_x, text_y = 160, 0 local l_string = "" local target_string = {} local damage = read16(Addresses.Damage_done) local dead = 0 --because display for turn is state 3 for 1 frame at end -- text(0,178,"Damage:"..damage) for i = 1, amount do if (Monsters[npcs[i].ID] == nil) then l_string = " (" .. npcs[i].ID .. ")" else l_string = Monsters[npcs[i].ID] .. " (" .. npcs[i].ID .. ") LV:" .. npcs[i].Level end text(text_x, (text_y + 34*(i-1)), l_string) text(text_x, (text_y + 34*(i-1))+7, "HP:" .. npcs[i].HP .. "/" .. npcs[i].Max_HP .. " MP:" .. npcs[i].MP .. "/" .. npcs[i].Max_MP) text(text_x, (text_y + 34*(i-1))+7*2, "ATK:" .. npcs[i].Attack .. " DEF:" .. npcs[i].Defence) text(text_x, (text_y + 34*(i-1))+7*3, "AGL:" .. npcs[i].Agility .. " INT:" .. npcs[i].Intelligence) if npcs[i].HP == 0 then dead = dead + 1 end end if follower_1 == 110 then local accum_xp = 0 for i = 1, 3 do -- if npcs[i].Target < 7 then -- target_string[#target_string+1] = "NPC" .. i .. " used " .. Skills[npcs[i].Skill].name .. " against " .. target[npcs[i].Target] -- end if xp[npcs[i].ID] ~= nil then accum_xp = accum_xp + xp[npcs[i].ID] end end local xp_now = read24(0xE73E) --my xp text(text_x, 100, "XP: " .. accum_xp) text(text_x, 107, "Current: " .. xp_now) text(text_x, 114, "Left: " .. 0x600 - xp_now % 16777215) text(text_x, 121, string.format("Fights: %0.3f",(0x600 - xp_now % 16777215-accum_xp)/384)) --0x600/4 end text_y = 144 --[[ Get turn order D895-D89A Are the indices from which turn is item 0 - follower 1 1 - follower 2 2 - follower 3 3 - ?? 4 - npc 1 5 - npc 2 6 - npc 3 D89E is the index of above; that's how you see current turn; 0 index is D895 Check if current monster exists Check if current monster has a real target --]] local turns = {} --for crit display, gets a list of ids corresponding to the turn for i = 0, 6 do local current_monster = read8(Addresses.Turn_1+i) if monsters[current_monster] ~= nil then --should be same indices as above if monsters[current_monster].Target < 7 then --check if the target index is valid target_string[#target_string+1] = target[current_monster] .. " used " .. Skills[monsters[current_monster].Skill].name .. " against " .. target[monsters[current_monster].Target] turns[#turns+1] = monsters[current_monster].ID end end end local turn_index = read8(Addresses.Turn_index) if state == 3 and dead ~= amount then --so it won't give me P1 used default against P1 spam for i = 1, #target_string do if turn_index == i-1 then color = "green" else color = "white" end text(0, text_y+(7*(i-1)),target_string[i], color) end end display_crit(turns) end function detect_region() if read8(0xF, "ROM") ~= 0 then return "J" else return "U" end end while true do local text_x = 160 local text_y = 144 local version = detect_region() local encounter = 0 local rng = 0 local battle_state_2 = 0 local xp_now = read24(0xE73E) --my xp local key = read8(0xE73F) local follower_1 = read8(Addresses.Follower_index_1) if version == "U" then encounter = read8(Addresses.Encounter_timer_U) rng = read16(Addresses.RNG_U) battle_state_2 = read8(Addresses.Battle_State_2_U) else encounter = read8(Addresses.Encounter_timer_J) rng = read16(Addresses.RNG_J) battle_state_2 = read8(Addresses.Battle_State_2_J) end local crit_timer = read8(Addresses.RNG2) local line = "RNG:"..("%04X"):format(rng) line = RNG_table[rng] ~= nil and line.." Calls:"..RNG_table[rng] or line map = read8(Addresses.Map_ID) --マップID map_x = read8(Addresses.Map_X) --マップXID map_y = read8(Addresses.Map_Y) --マップyID crit = read8(Addresses.Crit) game_state = read8(Addresses.Game_State) -- minutes = read8(Addresses.Minutes) -- frame = read8(Addresses.Frame) -- local reg = emu.getregisters() x = read8(Addresses.X) --x座標 y = read8(Addresses.Y) --y座標 -- local opcodes = print_instr(0xD5E1, 0xDa00) -- for i = 0,#opcodes do -- text(0, 57 + 7 * (i), opcodes[i]) -- end -- text(0,60,string.format("H:%02X L:%02X", reg.H, reg.L)) -- text(1, 50, "M:"..minutes.." F:"..frame) text(text_x, text_y-7, Map[map]) text(text_x, text_y, string.format("MAPID:%d X:%d Y:%d",map,map_x,map_y)) text(text_x, text_y+7, "X: " .. x .. "Y: ".. y) -- text(text_x, text_y+7*2, "X: " .. math.floor(x/16) .. "Y: ".. math.floor(y/16)) text(text_x, text_y+7*2, "Encounter: " .. encounter) text(text_x, text_y+7*3, "Crit timer: " .. crit_timer) text(text_x, text_y+7*4, line) if game_state < 4 then display_recruit() display_followers() if follower_1 == 110 then --it means we're going to mess with keys if Key[key] ~= nil then text(text_x, 100, "Key:" .. Key[key]) else text(text_x, 100, "Key:" .. key) end text(text_x, 107, "Current: " .. xp_now) text(text_x, 114, "Left: " .. 0x600 - xp_now % 16777215) end end if game_state == 4 then display_battle(battle_state_2, monsters) end frameadvance() end
This is the module I used to store all the addresses: Download dqm2 data.lua
Language: lua

local dragon_warrior_monsters_2_module = {} dragon_warrior_monsters_2_module.Addresses = { Game_State = 0xC5DB, Battle_State_1_J = 0xCFA5, Battle_State_2_J = 0xCFA6, Battle_State_1_U = 0xCFC8, Battle_State_2_U = 0xCFC9, RNG_J = 0xCCE0, RNG_U = 0xCD03, RNG2 = 0xC5E8, --??? but related to critical Frame = 0xC5F0, Money = 0xC617, Item_start = 0xC61D, -- Minutes = 0xC618, Hours = 0xC630, Followers = 0xC6FD, --how many npcs are following you Follower_index_1 = 0xC6FE, Follower_index_2 = 0xC6FF, Follower_index_3 = 0xC700, Encounter_timer_J = 0xC8DF, Encounter_timer_U = 0xC902, Crit = 0xD80E, Crit2 = 0xD820, Damage_done = 0xD872, Turn_1 = 0xD895, Turn_2 = 0xD896, Turn_3 = 0xD897, Turn_4 = 0xD898, Turn_5 = 0xD899, Turn_6 = 0xD89A, Turn_7 = 0xD89B, Turn_8 = 0xD89C, Turn_9 = 0xD89D, Turn_index = 0xD89E, Join = 0xD8A1, Current_turn = 0xD8A4, Current_target = 0xD8A5, Current_skill = 0xD8A6, Miss = 0xDAC0, X = 0xFF8E, Map_X = 0xFF8F, Y = 0xFF91, Map_Y = 0xFF92, Map_ID = 0xFF90, --all 2 bytes, even the IDs Player = { -- ID1 = 0xD006, -- ID1 = 0xD008, -- ID1 = 0xD00A, ID1 = 0xD958, ID2 = 0xD95A, ID3 = 0xD95C, Name1 = 0xD0D0, Name2 = 0xD123, Name3 = 0xD172, PowerUP1 = 0xD854, PowerUP2 = 0xD856, PowerUP3 = 0xD858, Level1 = 0xD8B7, Level2 = 0xD8B8, Level3 = 0xD8B9, HP1 = 0xD8BF, HP2 = 0xD8C1, HP3 = 0xD8C3, Max_HP1 = 0xD8CF, Max_HP2 = 0xD8D1, Max_HP3 = 0xD8D3, MP1 = 0xD8DF, MP2 = 0xD8E1, MP3 = 0xD8E3, Max_MP1 = 0xD8EF, Max_MP2 = 0xD8F1, Max_MP3 = 0xD8F3, Attack1 = 0xD8FF, Attack2 = 0xD901, Attack3 = 0xD903, Defence1 = 0xD90F, Defence2 = 0xD911, Defence3 = 0xD913, Agility1 = 0xD91F, Agility2 = 0xD921, Agility3 = 0xD923, Intelligence1 = 0xD92F, Intelligence2 = 0xD931, Intelligence3 = 0xD933, Wild1 = 0xD93F, Wild2 = 0xD941, Wild3 = 0xD943, Skill1 = 0xDA1C, --move I use Target1 = 0xDA1D, Skill2 = 0xDA1E, --move I use Target2 = 0xDA1F, Skill3 = 0xDA20, --move I use Target3 = 0xDA21 }, --When they join NPC = { ID1 = 0xD1C9, ID2 = 0xD217, ID3 = 0xD265, Gender1 = 0xD1CC, Level1 = 0xD1D6 }, --When they fight NPC_Battle = { -- Amount = 0xCFDC, Amount = 0xD890, Level1 = 0xD8BB, Level2 = 0xD8BC, Level3 = 0xD8BD, PowerUP1 = 0xD85C, PowerUP2 = 0xD85E, PowerUP3 = 0xD860, HP1 = 0xD8C7, HP2 = 0xD8C9, HP3 = 0xD8CB, Max_HP1 = 0xD8D7, Max_HP2 = 0xD8D9, Max_HP3 = 0xD8DB, MP1 = 0xD8E7, MP2 = 0xD8E9, MP3 = 0xD8EB, Max_MP1 = 0xD8F7, Max_MP2 = 0xD8F9, Max_MP3 = 0xD8FB, Attack1 = 0xD907, Attack2 = 0xD909, Attack3 = 0xD90B, Defence1 = 0xD917, Defence2 = 0xD919, Defence3 = 0xD91B, Agility1 = 0xD927, Agility2 = 0xD929, Agility3 = 0xD92B, Intelligence1 = 0xD937, Intelligence2 = 0xD939, Intelligence3 = 0xD93B, Wild1 = 0xD947, Wild2 = 0xD949, Wild3 = 0xD94B, ID1 = 0xD960, ID2 = 0xD962, ID3 = 0xD964, Skill1 = 0xDA24, --Move they use in fight Target1 = 0xDA25, --Who they attack in fight Skill2 = 0xDA26, --Move they use in fight Target2 = 0xDA27, --Move they use in fight Skill3 = 0xDA28, --Move they use in fight Target3 = 0xDA29, --Move they use in fight } } dragon_warrior_monsters_2_module.Items = { [0] = "No Items", [1] = "Herb", [2] = "Love Water", [3] = "World Dew", [4] = "Potion", [5] = "Elf Water", [6] = "Antidote", [7] = "Moon Herb", [8] = "Laurel", [9] = "Awake Sand", [10] = "Sky Bell", [11] = "Sage Rock", [12] = "World Leaf", [13] = "ATK Seed", [14] = "DEF Seed", [15] = "AGL Seed", [17] = "Life Acorn", [18] = "Mystic Nut", [19] = "Quest Book", [20] = "Horror Book", [21] = "Be Nice Book", [22] = "Cheater Book", [23] = "Smart Book", [24] = "Comedy Book", [25] = "Beef Jerky", [26] = "Pork Chop", [27] = "Rib", [28] = "Sirloin", [29] = "Bad Meat", [30] = "MeteOrb", [31] = "Beast Tail", [32] = "Repellent", [33] = "Shiny Harp", [34] = "Mist Staff", [35] = "Friend Staff", [36] = "Wind Staff", [37] = "Bolt Staff", [38] = "Snow Staff", [39] = "Fire Staff", [40] = "Warp Staff", [41] = "Warp Wing", [42] = "Exit Bell", [43] = "Book Mark", [44] = "Tiny Medal", [45] = "Gold Pass", [46] = "Log Twig", [47] = "Strange Blank Item", [48] = "Water Call", [49] = "Moon Rock", [50] = "Crest", [51] = "Yuna Soul", [52] = "Sleep Herb", [53] = "Change Staff", [54] = "Tidal Bell", [55] = "Har Mirror", [56] = "Sky Shield", [57] = "Heaven Helmet", [58] = "Heaven Armor", [59] = "Heaven Sword", [60] = "Wiz Stone", [61] = "Pretty Ring", [62] = "VIT Belt", [63] = "VIT Belt", [64] = "VIT Belt", [65] = "Draco Belt", [66] = "Magic Belt", [67] = "Odd Belt", [68] = "Stone Fang", [69] = "Steel Fang", [70] = "Merm Scale", [71] = "Drak Scale", [72] = "AGL Ring", [73] = "Starry Ring", [74] = "Smart Hat", [75] = "Wise Hat", [76] = "Magic Cape", [77] = "Draco Cape", [78] = "Silver Cape", [79] = "Gold Cape", [80] = "Plntnm Cape", [81] = "Orca Cape", [82] = "Brave Cape", [83] = "D-Scale", [84] = "None", [85] = "None 2 Glitch Item", [86] = "None 3 Glitch Item", [87] = "None 4 Glitch Item", [88] = "None 5 Glitch Item", [89] = "None 6 Glitch Item", [90] = "Life Ring", [91] = "Divine Ring", [92] = "War Ring", [93] = "Mage Ring", [94] = "Fight Ring", [95] = "Sailor Ring", [96] = "Thief Ring", [97] = "Cleric Ring" } dragon_warrior_monsters_2_module.Monsters = { [0] = " ", [1] = "DrakSlime", [2] = "SpotSlime", [3] = "WingSlime", [4] = "TreeSlime", [5] = "Snaily", [6] = "SlimeNite", [7] = "Babble", [8] = "BoxSlime", [9] = "PearlGel", [10] = "Slime", [11] = "Healer", [12] = "FangSlime", [13] = "RockSlime", [14] = "SlimeBorg", [15] = "Slabbit", [16] = "KingSlime", [17] = "Metaly", [18] = "Metabble", [19] = "SpotKing", [20] = "TropicGel", [21] = "MimeSlime", [22] = "HaloSlime", [23] = "MetalKing", [24] = "GoldSlime", [25] = "GranSlime", [26] = "WonderEgg", [27] = "Butch", [28] = "?", [29] = "?", [30] = "?", [31] = "?", [32] = "?", [33] = "?", [34] = "?", [35] = "?", [36] = "DragonKid", [37] = "Tortragon", [38] = "Pteranod", [39] = "Gasgon", [40] = "FairyDrak", [41] = "LizardMan", [42] = "Poisongon", [43] = "Swordgon", [44] = "Drygon", [45] = "Dragon", [46] = "MiniDrak", [47] = "MadDragon", [48] = "Rayburn", [49] = "Chamelgon", [50] = "LizardFly", [51] = "Andreal", [52] = "KingCobra", [53] = "Vampirus", [54] = "SnakeBat", [55] = "Spikerous", [56] = "GreatDrak", [57] = "Crestpent", [58] = "WingSnake", [59] = "Coatol", [60] = "Orochi", [61] = "BattleRex", [62] = "SkyDragon", [63] = "Serpentia", [64] = "Divinegon", [65] = "Orligon", [66] = "GigaDraco", [67] = "?", [68] = "?", [69] = "?", [70] = "?", [71] = "Tonguella", [72] = "Almiraj", [73] = "Catfly", [74] = "PillowRat", [75] = "Saccer", [76] = "GulpBeast", [77] = "Skullroo", [78] = "WindBeast", [79] = "Beavern", [80] = "Anteater", [81] = "SuperTen", [82] = "IronTurt", [83] = "Mommonja", [84] = "HammerMan", [85] = "Grizzly", [86] = "Yeti", [87] = "ArrowDog", [88] = "NoctoKing", [89] = "BeastNite", [90] = "MadGopher", [91] = "FairyRat", [92] = "Unicorn", [93] = "Goategon", [94] = "WildApe", [95] = "Trumpeter", [96] = "KingLeo", [97] = "DarkHorn", [98] = "MadCat", [99] = "BigEye", [100] = "Gorago", [101] = "CatMage", [102] = "Dumbira", [103] = "?", [104] = "?", [105] = "?", [106] = "Picky", [107] = "Wyvern", [108] = "BullBird", [109] = "FloraJay", [110] = "DuckKite", [111] = "MadPecker", [112] = "MadRaven", [113] = "MistyWing", [114] = "AquaHawk", [115] = "Dracky", [116] = "KiteHawk", [117] = "BigRoost", [118] = "StubBird", [119] = "LandOwl", [120] = "MadGoose", [121] = "MadCondor", [122] = "Emyu", [123] = "Blizzardy", [124] = "Phoenix", [125] = "ZapBird", [126] = "Garudian", [127] = "WhipBird", [128] = "FunkyBird", [129] = "RainHawk", [130] = "Azurile", [131] = "Shantak", [132] = "CragDevil", [133] = "?", [134] = "?", [135] = "?", [136] = "?", [137] = "?", [138] = "?", [139] = "?", [140] = "?", [141] = "MadPlant", [142] = "FireWeed", [143] = "FloraMan", [144] = "WingTree", [145] = "CactiBall", [146] = "Gulpple", [147] = "Toadstool", [148] = "AmberWeed", [149] = "Slurperon", [150] = "StubSuck", [151] = "Oniono", [152] = "DanceVegi", [153] = "TreeBoy", [154] = "Devipine", [155] = "FaceTree", [156] = "HerbMan", [157] = "BeanMan", [158] = "EvilSeed", [159] = "ManEater", [160] = "Snapper", [161] = "GhosTree", [162] = "Rosevine", [163] = "Egdracil", [164] = "Warubou", [165] = "Watabou", [166] = "Eggplaton", [167] = "FooHero", [168] = "?", [169] = "?", [170] = "?", [171] = "?", [172] = "?", [173] = "?", [174] = "?", [175] = "?", [176] = "GiantSlug", [177] = "Catapila", [178] = "Gophecada ", [179] = "Butterfly", [180] = "WeedBug", [181] = "GiantWorm", [182] = "Lipsy", [183] = "StagBug", [184] = "Pyuro", [185] = "ArmyAnt", [186] = "GoHopper", [187] = "TailEater", [188] = "ArmorPede", [189] = "Eyeder", [190] = "GiantMoth", [191] = "Droll", [192] = "ArmyCrab", [193] = "MadHornet", [194] = "Belzebub", [195] = "WarMantis", [196] = "HornBeet", [197] = "Sickler", [198] = "Armorpion", [199] = "Digster", [200] = "Skularach", [201] = "MultiEyes", [202] = "?", [203] = "?", [204] = "?", [205] = "?", [206] = "?", [207] = "?", [208] = "?", [209] = "?", [210] = "?", [211] = "Pixy", [212] = "MedusaEye", [213] = "AgDevil", [214] = "Demonite", [215] = "DarkEye", [216] = "EyeBall", [217] = "SkulRider", [218] = "EvilBeast", [219] = "Bubblemon", [220] = "1EyeClown", [221] = "Gremlin", [222] = "ArcDemon", [223] = "Lionex", [224] = "GoatHorn", [225] = "Orc", [226] = "Ogre", [227] = "GateGuard", [228] = "ChopClown", [229] = "BossTroll", [230] = "Grendal", [231] = "Akubar", [232] = "MadKnight", [233] = "EvilWell", [234] = "Gigantes", [235] = "Centasaur", [236] = "EvilArmor", [237] = "Jamirus", [238] = "Durran", [239] = "Titanis", [240] = "LampGenie", [241] = "?", [242] = "?", [243] = "?", [244] = "?", [245] = "?", [246] = "Spooky", [247] = "Skullgon", [248] = "Putrepup", [249] = "PotRaven", [250] = "Mummy", [251] = "DarkCrab", [252] = "DeadNite", [253] = "Shadow", [254] = "Skulpent", [255] = "Hork", [256] = "Mudron", [257] = "NiteWhip", [258] = "WindMerge", [259] = "Reaper", [260] = "Inverzon", [261] = "FoxFire", [262] = "CaptDead", [263] = "DeadNoble", [264] = "WhiteKing", [265] = "BoneSlave", [266] = "Skeletor", [267] = "Servant", [268] = "Lazamanus", [269] = "Copycat", [270] = "MadSpirit", [271] = "PomPomBom", [272] = "Niterich", [273] = "?", [274] = "?", [275] = "?", [276] = "?", [277] = "?", [278] = "?", [279] = "?", [280] = "?", [281] = "JewelBag", [282] = "EvilWand", [283] = "MadCandle", [284] = "CoilBird", [285] = "Facer", [286] = "SpikyBoy", [287] = "MadMirror", [288] = "RogueNite", [289] = "Puppetor", [290] = "Goopi", [291] = "Voodoll", [292] = "MetalDrak", [293] = "Balzak", [294] = "SabreMan", [295] = "CurseLamp", [296] = "Brushead", [297] = "Roboster", [298] = "Roboster2", [299] = "EvilPot", [300] = "Gismo", [301] = "LavaMan", [302] = "IceMan", [303] = "Mimic", [304] = "Exaucers", [305] = "MudDoll", [306] = "Golem", [307] = "StoneMan", [308] = "BombCrag", [309] = "GoldGolem", [310] = "DarkMate", [311] = "ProtoMech", [312] = "CloudKing", [313] = "?", [314] = "?", [315] = "?", [316] = "Petiteel", [317] = "Moray", [318] = "WalrusMan", [319] = "RayGigas", [320] = "Anemon", [321] = "Aquarella", [322] = "Merman", [323] = "Octokid", [324] = "PutreFish", [325] = "Octoreach", [326] = "Angleron", [327] = "FishRider", [328] = "RushFish", [329] = "Gamanian ", [330] = "Clawster", [331] = "CancerMan", [332] = "RogueWave", [333] = "Scallopa", [334] = "SeaHorse", [335] = "HoodSquid", [336] = "MerTiger", [337] = "AxeShark", [338] = "Octogon", [339] = "KingSquid", [340] = "Digong", [341] = "WhaleMage", [342] = "Aquadon", [343] = "Octoraid", [344] = "Grakos", [345] = "Poseidon", [346] = "Pumpoise", [347] = "Starfish", [348] = "?", [349] = "?", [350] = "?", [351] = "DracoLord", [352] = "DracoLord1", [353] = "LordDraco", [354] = "Hargon", [355] = "Sidoh", [356] = "Genosidoh", [357] = "Baramos", [358] = "Zoma", [359] = "AsuraZoma", [360] = "Pizzaro", [361] = "PsychoPiz", [362] = "Esterk", [363] = "Mirudraas1", [364] = "Mirudraas2", [365] = "Mudou", [366] = "DeathMore1", [367] = "DeathMore2", [368] = "DeathMore3", [369] = "DarkDrium", [370] = "Orgodemir", [371] = "Orgodemir2", [372] = "Darck", [373] = "Lamia", [374] = "Tatsu", [375] = "Samsi", [376] = "Bazoo", [377] = "?", [378] = "?", [379] = "?", [380] = "Lamia", [381] = "Dimensaur", [382] = "Kagebou" } dragon_warrior_monsters_2_module.Skills = { [0] = {name = "default attack", mp = 0}, [1] = {name = "Blaze", mp = 2}, [2] = {name = "Blazemore", mp = 4}, [3] = {name = "Blazemost", mp = 10}, [4] = {name = "Firebal", mp = 4}, [5] = {name = "Firebane", mp = 6}, [6] = {name = "Firebolt", mp = 10}, [7] = {name = "Bang", mp = 5}, [8] = {name = "Boom", mp = 8}, [9] = {name = "Explodet", mp = 15}, [10] = {name = "Infernos", mp = 2}, [11] = {name = "Infermore", mp = 4}, [12] = {name = "Infermost", mp = 8}, [13] = {name = "Bolt", mp = 5}, [14] = {name = "Zap", mp = 10}, [15] = {name = "Thordain", mp = 15}, [16] = {name = "IceBolt", mp = 3}, [17] = {name = "SnowStorm", mp = 5}, [18] = {name = "Blizzard", mp = 12}, [19] = {name = "Beat", mp = 4}, [20] = {name = "Defeat", mp = 7}, [21] = {name = "Sacrifice", mp = 1}, [22] = {name = "Heal", mp = 2}, [23] = {name = "HealMore", mp = 5}, [24] = {name = "HealAll", mp = 7}, [25] = {name = "HealUs", mp = 18}, [26] = {name = "HealUsAll", mp = 36}, [27] = {name = "MPass", mp = 20}, [28] = {name = "MPassmore", mp = 40}, [29] = {name = "MPassmost", mp = 100}, [30] = {name = "Vivify", mp = 10}, [31] = {name = "Revive", mp = 20}, [32] = {name = "Farewell", mp = 0}, [33] = {name = "Antidote", mp = 2}, [34] = {name = "DeChaos", mp = 2}, [35] = {name = "NumbOff", mp = 2}, [36] = {name = "CurseOff", mp = 2}, [37] = {name = "Upper", mp = 2}, [38] = {name = "Increase", mp = 3}, [39] = {name = "Sap", mp = 3}, [40] = {name = "Defense", mp = 4}, [41] = {name = "Speed", mp = 2}, [42] = {name = "SpeedUp", mp = 3}, [43] = {name = "Slow", mp = 3}, [44] = {name = "SlowAll", mp = 4}, [45] = {name = "TwinHits", mp = 6}, [46] = {name = "Surround", mp = 3}, [47] = {name = "Sleep", mp = 3}, [48] = {name = "SleepAll", mp = 5}, [49] = {name = "TakeMagic", mp = 2}, [50] = {name = "RobMagic", mp = 0}, [51] = {name = "StopSpell", mp = 3}, [52] = {name = "PanicAll", mp = 5}, [53] = {name = "Ironize", mp = 2}, [54] = {name = "MagicBack", mp = 4}, [55] = {name = "Bounce", mp = 4}, [56] = {name = "Barrier", mp = 3}, [57] = {name = "MagicWall", mp = 3}, [58] = {name = "Transform", mp = 5}, [59] = {name = "BeDragon", mp = 9}, [60] = {name = "Chance", mp = 20}, [61] = {name = "MegaMagic", mp = 0}, [62] = {name = "BigBang", mp = 30}, [63] = {name = "Hellblast", mp = 25}, [64] = {name = "FireAir", mp = 2}, [65] = {name = "BlazeAir", mp = 4}, [66] = {name = "Scorching", mp = 8}, [67] = {name = "WhiteFire", mp = 16}, [68] = {name = "FrigidAir", mp = 2}, [69] = {name = "IceAir", mp = 4}, [70] = {name = "IceStorm", mp = 8}, [71] = {name = "WhiteAir", mp = 16}, [72] = {name = "WindBeast", mp = 3}, [73] = {name = "Vacuum", mp = 6}, [74] = {name = "Lightning", mp = 3}, [75] = {name = "RockThrow", mp = 5}, [76] = {name = "Watershot", mp = 5}, [77] = {name = "Tidalwave", mp = 15}, [78] = {name = "CallHelp", mp = 4}, [79] = {name = "YellHelp", mp = 8}, [80] = {name = "FireSlash", mp = 3}, [81] = {name = "VacuSlash", mp = 3}, [82] = {name = "BoltSlash", mp = 3}, [83] = {name = "IceSlash", mp = 3}, [84] = {name = "SlimeBlow", mp = 3}, [85] = {name = "DrakSlash", mp = 3}, [86] = {name = "BeastCut", mp = 3}, [87] = {name = "BirdBlow", mp = 3}, [88] = {name = "BugBlow", mp = 3}, [89] = {name = "Shears", mp = 3}, [90] = {name = "DevilCut", mp = 3}, [91] = {name = "ZombieCut", mp = 3}, [92] = {name = "CleanCut", mp = 3}, [93] = {name = "AquaCut", mp = 3}, [94] = {name = "MetalCut", mp = 3}, [95] = {name = "PoisonHit", mp = 2}, [96] = {name = "Paralyze", mp = 3}, [97] = {name = "NapAttack", mp = 2}, [98] = {name = "SquallHit", mp = 2}, [99] = {name = "BiAttack", mp = 3}, [100] = {name = "QuadHits", mp = 6}, [101] = {name = "RainSlash", mp = 5}, [102] = {name = "MultiCut", mp = 20}, [103] = {name = "GigaSlash", mp = 20}, [104] = {name = "ChargeUp", mp = 0}, [105] = {name = "PsycheUp", mp = 3}, [106] = {name = "HighJump", mp = 5}, [107] = {name = "EvilSlash", mp = 3}, [108] = {name = "Massacre", mp = 3}, [109] = {name = "TwinSlash", mp = 2}, [110] = {name = "Beserker", mp = 1}, [111] = {name = "Ramming", mp = 1}, [112] = {name = "Kamikaze", mp = 1}, [113] = {name = "SleepAir", mp = 3}, [114] = {name = "PalsyAir", mp = 4}, [115] = {name = "PoisonGas", mp = 3}, [116] = {name = "PoisonAir", mp = 4}, [117] = {name = "Curse", mp = 3}, [118] = {name = "OddDance", mp = 0}, [119] = {name = "RobDance", mp = 0}, [120] = {name = "PaniDance", mp = 4}, [121] = {name = "K.O.Dance", mp = 6}, [122] = {name = "LureDance", mp = 2}, [123] = {name = "LifeDance", mp = 0}, [124] = {name = "Hustle", mp = 12}, [125] = {name = "SideStep", mp = 1}, [126] = {name = "SandStorm", mp = 2}, [127] = {name = "Radiant", mp = 2}, [128] = {name = "EerieLite", mp = 2}, [129] = {name = "Surge", mp = 7}, [130] = {name = "UltraDown", mp = 7}, [131] = {name = "DeMagic", mp = 7}, [132] = {name = "ThickFog", mp = 8}, [133] = {name = "TatsuCall", mp = 20}, [134] = {name = "DiagoCall", mp = 20}, [135] = {name = "SamsiCall", mp = 20}, [136] = {name = "BazooCall", mp = 20}, [137] = {name = "SuckAir", mp = 0}, [138] = {name = "Focus", mp = 0}, [139] = {name = "LushLicks", mp = 2}, [140] = {name = "SickLick", mp = 4}, [141] = {name = "LegSweep", mp = 1}, [142] = {name = "BigTrip", mp = 3}, [143] = {name = "Ahhh", mp = 1}, [144] = {name = "WarCry", mp = 3}, [145] = {name = "Geyser", mp = 2}, [146] = {name = "DanceShut", mp = 6}, [147] = {name = "MouthShut", mp = 6}, [148] = {name = "StrongD", mp = 3}, [149] = {name = "Dodge", mp = 4}, [150] = {name = "BladeD", mp = 3}, [151] = {name = "Cover", mp = 2}, [152] = {name = "Guardian", mp = 4}, [153] = {name = "TailWind", mp = 6}, [154] = {name = "StormWind", mp = 10}, [155] = {name = "AquaWall", mp = 5}, [156] = {name = "SealPray", mp = 15}, [157] = {name = "SuckAll", mp = 2}, [158] = {name = "Imitate", mp = 4}, [159] = {name = "Meditate", mp = 8}, [160] = {name = "LifeSong", mp = 20}, [161] = {name = "LoveRain", mp = 28}, [162] = {name = "Whistle", mp = 0}, [163] = {name = "Pheromone", mp = 0}, [164] = {name = "StepGuard", mp = 2}, [165] = {name = "Outside", mp = 2}, [166] = {name = "Informer", mp = 0}, [167] = {name = "Errand", mp = 2}, [168] = {name = "EagleEye", mp = 0}, [169] = {name = "MapMagic", mp = 2}, [170] = {name = "Ahhh", mp = 1}, [171] = {name = "ZoneOut", mp = 0}, [172] = {name = "Guard", mp = 0}, [173] = {name = "PanicAll", mp = 5}, [174] = {name = "Ironize", mp = 2}, [175] = {name = "HighJump", mp = 0}, [176] = {name = "HighJump", mp = 0}, [177] = {name = "HighJump", mp = 0}, [178] = {name = "HighJump", mp = 0}, [179] = {name = "HighJump", mp = 0}, [180] = {name = "HighJump", mp = 0}, [181] = {name = "HighJump", mp = 0}, [182] = {name = "HighJump", mp = 0}, [183] = {name = "HighJump", mp = 0}, [184] = {name = "HighJump", mp = 0}, [185] = {name = "HighJump", mp = 0}, [186] = {name = "HighJump", mp = 0}, [187] = {name = "HighJump", mp = 0}, [188] = {name = "HighJump", mp = 0}, [189] = {name = "HighJump", mp = 0}, [190] = {name = "HighJump", mp = 0}, [191] = {name = "HighJump", mp = 0}, [192] = {name = "HighJump", mp = 0}, [193] = {name = "HighJump", mp = 0}, [194] = {name = "HighJump", mp = 0}, [195] = {name = "HighJump", mp = 0}, [196] = {name = "HighJump", mp = 0}, [197] = {name = "HighJump", mp = 0}, [198] = {name = "HighJump", mp = 0}, [199] = {name = "HighJump", mp = 0}, [200] = {name = "HighJump", mp = 0}, [201] = {name = "HighJump", mp = 0}, [202] = {name = "HighJump", mp = 0}, [203] = {name = "HighJump", mp = 0}, [204] = {name = "HighJump", mp = 0}, [205] = {name = "LoveRain", mp = 0}, [206] = {name = "LoveRain", mp = 0}, [207] = {name = "LoveRain", mp = 0}, [208] = {name = "", mp = 0}, [209] = {name = "", mp = 0}, [210] = {name = "", mp = 0}, [211] = {name = "", mp = 0}, [212] = {name = "", mp = 0}, [213] = {name = "", mp = 0}, [214] = {name = "", mp = 0}, [215] = {name = "", mp = 0}, [216] = {name = "", mp = 0}, [217] = {name = "", mp = 0}, [218] = {name = "", mp = 0}, [219] = {name = "", mp = 0}, [220] = {name = "", mp = 0}, [221] = {name = "", mp = 0}, [222] = {name = "", mp = 0}, [223] = {name = "", mp = 0}, [224] = {name = "Herb", mp = 0}, [225] = {name = "LoveWater", mp = 0}, [226] = {name = "WorldDew", mp = 0}, [227] = {name = "Potion", mp = 0}, [228] = {name = "ElfWater", mp = 0}, [229] = {name = "Antidote", mp = 0}, [230] = {name = "MoonHerb", mp = 0}, [231] = {name = "Laurel", mp = 0}, [232] = {name = "AwakeSand", mp = 0}, [233] = {name = "SkyBell", mp = 0}, [234] = {name = "SageRock", mp = 0}, [235] = {name = "WorldLeaf", mp = 0}, [236] = {name = "ATKseed", mp = 0}, [237] = {name = "DEFseed", mp = 0}, [238] = {name = "AGLseed", mp = 0}, [239] = {name = "INTseed", mp = 0}, [240] = {name = "LifeAcorn", mp = 0}, [241] = {name = "MysticNut", mp = 0}, [242] = {name = "Quest📚", mp = 0}, [243] = {name = "Horror📚", mp = 54}, [244] = {name = "BeNice📚", mp = 0}, [245] = {name = "Cheater📚", mp = 0}, [246] = {name = "Smart📚", mp = 0}, [247] = {name = "Comedy📚", mp = 0}, [248] = {name = "BeefJerky", mp = 0}, [249] = {name = "PorkChop", mp = 0}, [250] = {name = "Rib", mp = 0}, [251] = {name = "Sirloin", mp = 0}, [252] = {name = "BadMeat", mp = 0}, [253] = {name = "MeteOrb", mp = 87}, [254] = {name = "BeastTail", mp = 0}, [255] = {name = "No skills", mp = 0} } dragon_warrior_monsters_2_module.Map = { [0] = "Monster Farm", [1] = "GreatLog", [2] = "Main Street", [3] = "Magic Door", [4] = "Reception", [5] = "Log's Navel", [6] = "Home", [7] = "Stable", [8] = "Vault", [9] = "Key Shop", [10] = "Evaluator", [11] = "Arena", [12] = "Residences", [13] = "Starry Shrine", [14] = "Family Room", [15] = "Guy's Room", [16] = "Lady's Room", [17] = "Library", [18] = "Girl's Room", [19] = "Christener", [20] = "Background", [21] = "Old man's", [22] = "Medal man", [23] = "Tavern", [24] = "Arena", [25] = "GreatLog Castle", [26] = "Tree Top", [27] = "Log's nut", [28] = "Log's view", [29] = "Deck", [30] = "No", [31] = "No", [32] = "Desert World", [33] = "Kalka house", [34] = "Kalka Inn", [35] = "Asiya Inn", [36] = "Asiya House", [37] = "Asiya Castle", [38] = "Asiya Throne", [39] = "No", [40] = "Hideout", [41] = "Desert Shrine", [42] = "CanalGate", [43] = "Canal", [44] = "Mirage Lake", [45] = "Asiya Jail", [46] = "Asiya Treasury", [47] = "Mirage Lake", [48] = "Water World", [49] = "Yold Village", [50] = "Port Ritz", [51] = "Port Ritz Pub", [52] = "Port Ritz Inn", [53] = "Cape Cave", [54] = "", [55] = "Ship 1F", [56] = "", [57] = "", [58] = "", [59] = "", [60] = "Port Polona", [61] = "Polona inn", [62] = "Lighthouse 1F", [63] = "Lighthouse 2F", [64] = "Lighthouse 3F", [65] = "Mermaid World", [66] = "Ship 2F", [67] = "", [68] = "", [69] = "Water Shrine", [70] = "", [71] = "", [72] = "", [73] = "", [74] = "", [75] = "", [76] = "", [77] = "", [78] = "", [79] = "", [80] = "", [81] = "", [82] = "", [83] = "", [84] = "", [85] = "", [86] = "", [87] = "", [88] = "", [89] = "", [90] = "", [91] = "", [92] = "", [93] = "", [94] = "", [95] = "", [96] = "", [97] = "", [98] = "", [99] = "", [100] = "", [101] = "", [102] = "", [103] = "", [104] = "", [105] = "", [106] = "", [107] = "", [108] = "", [109] = "", [110] = "", [111] = "", [112] = "", [113] = "", [114] = "", [115] = "", [116] = "", [117] = "", [118] = "", [119] = "", [120] = "", [121] = "", [122] = "", [123] = "", [124] = "", [125] = "", [126] = "", [127] = "", [128] = "", [129] = "", [130] = "", [131] = "", [132] = "", [133] = "", [134] = "", [135] = "", [136] = "", [137] = "", [138] = "", [139] = "", [140] = "", [141] = "", [142] = "", [143] = "", [144] = "", [145] = "", [146] = "", [147] = "", [148] = "", [149] = "", [150] = "", [151] = "", [152] = "", [153] = "", [154] = "", [155] = "", [156] = "", [157] = "", [158] = "", [159] = "", [160] = "Limbo World", [161] = "Darck Stairway", [162] = "Darck Manor", [163] = "Darck Gallery", [164] = "Limbo Shrine", [165] = "", [166] = "", [167] = "", [168] = "", [169] = "", [170] = "", [171] = "", [172] = "", [173] = "", [174] = "", [175] = "", [176] = "", [177] = "", [178] = "", [179] = "", [180] = "", [181] = "", [182] = "", [183] = "", [184] = "", [185] = "", [186] = "", [187] = "", [188] = "", [189] = "", [190] = "", [191] = "", [192] = "", [193] = "", [194] = "", [195] = "", [196] = "", [197] = "", [198] = "", [199] = "", [200] = "", [201] = "", [202] = "", [203] = "", [204] = "", [205] = "", [206] = "", [207] = "", [208] = "", [209] = "", [210] = "", [211] = "", [212] = "", [213] = "", [214] = "", [215] = "", [216] = "", [217] = "", [218] = "", [219] = "", [220] = "", [221] = "", [222] = "", [223] = "", [224] = "", [225] = "", [226] = "", [227] = "", [228] = "", [229] = "", [230] = "", [231] = "", [232] = "", [233] = "", [234] = "", [235] = "", [236] = "", [237] = "", [238] = "", [239] = "", [240] = "", [241] = "", [242] = "", [243] = "", [244] = "", [245] = "", [246] = "", [247] = "", [248] = "", [249] = "", [250] = "", [251] = "", [252] = "", [253] = "", [254] = "", [255] = "" } dragon_warrior_monsters_2_module.Key = { [0] = "", [1] = "GreatLog", [2] = "Oasis", [3] = "Pirate", [4] = "Ice", [5] = "Sky", [6] = "Limbo", [7] = "Elf", [8] = "Lonely", [9] = "Traveler", [10] = "Brawn", [11] = "Baffle", [12] = "Soul", --Star next to name [65] = "GreatLog", [66] = "Oasis", [67] = "Pirate", [68] = "Ice", [69] = "Sky", [70] = "Limbo", [71] = "Elf", [72] = "Lonely", [73] = "Traveler", [74] = "Brawn", [75] = "Baffle", [76] = "Soul", [255] = "" } dragon_warrior_monsters_2_module.Follower_Base = { --CartRAM [0] = 0x0, [1] = 0xA5, [2] = 0x14A, [3] = 0x1EF, [4] = 0x294, [5] = 0x339, [6] = 0x3DE, [7] = 0x483, [8] = 0x528, [9] = 0x5CD, [10] = 0x672, [11] = 0x717, [12] = 0x7BC, [13] = 0x861, [14] = 0x906, [15] = 0x9AB, [16] = 0xA50, [17] = 0xAF5, [18] = 0xB9A, [19] = 0xC3F, [20] = 0xCE4, [21] = 0xD89, [22] = 0xE2E, [23] = 0xED3, [24] = 0xF78, [25] = 0x101D, [26] = 0x10C2, [27] = 0x1167, [28] = 0x120C, [29] = 0x12B1, [30] = 0x1356, [31] = 0x13FB, [32] = 0x14A0, [33] = 0x1545, [34] = 0x15EA, [35] = 0x168F, [36] = 0x1734, [37] = 0x17D9, [38] = 0x187E, [39] = 0x1923, [40] = 0x19C8, [41] = 0x1A6D, [42] = 0x1B12, [43] = 0x1BB7, [44] = 0x1C5C, [45] = 0x1D01, [46] = 0x1DA6, [47] = 0x1E4B, [48] = 0x1EF0, [49] = 0x1F95, --System Bus [50] = 0xC03A, [51] = 0xC0DF, [52] = 0xC184, [53] = 0xC229, [54] = 0xC2CE, [55] = 0xC373, [56] = 0xC418, [57] = 0xC4BD, [58] = 0xC562, [59] = 0xC607, [60] = 0xC6AC, [61] = 0xC751, [62] = 0xC7F6, [63] = 0xC89B, [64] = 0xC940, [65] = 0xC9E5, [66] = 0xCA8A, [67] = 0xCB2F, [68] = 0xCBD4, [69] = 0xCC79, [70] = 0xCD1E, [71] = 0xCDC3, [72] = 0xCE68, [73] = 0xCF0D, [74] = 0xCFB2, [75] = 0xD057, [76] = 0xD0FC, [77] = 0xD1A1, [78] = 0xD246, [79] = 0xD2EB, [80] = 0xD390, [81] = 0xD435, [82] = 0xD4DA, [83] = 0xD57F, [84] = 0xD624, [85] = 0xD6C9, [86] = 0xD76E, [87] = 0xD813, [88] = 0xD8B8, [89] = 0xD95D, [90] = 0xDA02, [91] = 0xDAA7, [92] = 0xDB4C, [93] = 0xDBF1, [94] = 0xDC96, [95] = 0xDD3B, [96] = 0xDDE0, [97] = 0xDE85, [98] = 0xDF2A, [99] = 0xDFCF, [100] = 0xE074, [101] = 0xE119, [102] = 0xE1BE, [103] = 0xE263, [104] = 0xE308, [105] = 0xE3AD, [106] = 0xE452, [107] = 0xE4F7, [108] = 0xE59C, [109] = 0xE641, [110] = 0xE6E6, [111] = 0xE78B, [112] = 0xE830, [113] = 0xE8D5, [114] = 0xE97A, [115] = 0xEA1F, [116] = 0xEAC4, [117] = 0xEB69, [118] = 0xEC0E, [119] = 0xECB3, [120] = 0xED58, [121] = 0xEDFD, [122] = 0xEEA2, [123] = 0xEF47, [124] = 0xEFEC, [125] = 0xF091, [126] = 0xF136, [127] = 0xF1DB, [128] = 0xF280, [129] = 0xF325, [130] = 0xF3CA, [131] = 0xF46F, [132] = 0xF514, [133] = 0xF5B9, [134] = 0xF65E, [135] = 0xF703, [136] = 0xF7A8, [137] = 0xF84D, [138] = 0xF8F2, [139] = 0xF997, [140] = 0xFA3C, [141] = 0xFAE1, [142] = 0xFB86, [143] = 0xFC2B, [144] = 0xFCD0, [145] = 0xFD75, [146] = 0xFE1A, [147] = 0xFEBF, [148] = 0xFF64 } --Use this when Slime is in battle dragon_warrior_monsters_2_module.Crit = { [0]= 0, [1]= 0, [2]= 0, [3]= 0, [4]= 0, [5]= 0, [6]= 0, [7]= 0, [8]= 0, [9]= 0, [10]= 0, [11]= 0, [12]= 0, [13]= 0, [14]= 0, [15]= 0, [16]= 0, [17]= 0, [18]= 0, [19]= 0, [20]= 0, [21]= 0, [22]= 0, [23]= 0, [24]= 0, [25]= 128, [26]= 0, [27]= 0, [28]= 0, [29]= 0, [30]= 0, [31]= 0, [32]= 128, [33]= 0, [34]= 0, [35]= 0, [36]= 0, [37]= 0, [38]= 0, [39]= 0, [40]= 0, [41]= 0, [42]= 0, [43]= 0, [44]= 0, [45]= 0, [46]= 0, [47]= 0, [48]= 0, [49]= 0, [50]= 0, [51]= 0, [52]= 0, [53]= 0, [54]= 0, [55]= 0, [56]= 0, [57]= 0, [58]= 0, [59]= 0, [60]= 0, [61]= 0, [62]= 0, [63]= 0, [64]= 0, [65]= 0, [66]= 0, [67]= 0, [68]= 0, [69]= 0, [70]= 0, [71]= 0, [72]= 0, [73]= 0, [74]= 128, [75]= 0, [76]= 128, [77]= 0, [78]= 0, [79]= 0, [80]= 0, [81]= 0, [82]= 0, [83]= 0, [84]= 0, [85]= 0, [86]= 0, [87]= 0, [88]= 0, [89]= 0, [90]= 0, [91]= 0, [92]= 0, [93]= 0, [94]= 0, [95]= 0, [96]= 0, [97]= 0, [98]= 0, [99]= 0, [100]= 0, [101]= 0, [102]= 0, [103]= 0, [104]= 0, [105]= 0, [106]= 0, [107]= 0, [108]= 0, [109]= 0, [110]= 0, [111]= 0, [112]= 0, [113]= 0, [114]= 0, [115]= 0, [116]= 0, [117]= 0, [118]= 0, [119]= 0, [120]= 0, [121]= 0, [122]= 0, [123]= 0, [124]= 0, [125]= 0, [126]= 0, [127]= 0, [128]= 0, [129]= 0, [130]= 0, [131]= 0, [132]= 0, [133]= 0, [134]= 0, [135]= 0, [136]= 0, [137]= 0, [138]= 0, [139]= 0, [140]= 0, [141]= 0, [142]= 0, [143]= 0, [144]= 0, [145]= 0, [146]= 0, [147]= 0, [148]= 0, [149]= 0, [150]= 0, [151]= 0, [152]= 0, [153]= 128, [154]= 0, [155]= 0, [156]= 0, [157]= 0, [158]= 0, [159]= 0, [160]= 128, [161]= 0, [162]= 0, [163]= 0, [164]= 0, [165]= 0, [166]= 0, [167]= 0, [168]= 0, [169]= 0, [170]= 0, [171]= 0, [172]= 0, [173]= 0, [174]= 0, [175]= 0, [176]= 0, [177]= 0, [178]= 0, [179]= 0, [180]= 0, [181]= 0, [182]= 0, [183]= 0, [184]= 0, [185]= 0, [186]= 0, [187]= 0, [188]= 0, [189]= 0, [190]= 0, [191]= 0, [192]= 0, [193]= 0, [194]= 0, [195]= 0, [196]= 0, [197]= 0, [198]= 0, [199]= 0, [200]= 0, [201]= 0, [202]= 128, [203]= 0, [204]= 128, [205]= 0, [206]= 0, [207]= 0, [208]= 0, [209]= 0, [210]= 0, [211]= 0, [212]= 0, [213]= 0, [214]= 0, [215]= 0, [216]= 0, [217]= 0, [218]= 0, [219]= 0, [220]= 0, [221]= 0, [222]= 0, [223]= 0, [224]= 0, [225]= 0, [226]= 0, [227]= 0, [228]= 0, [229]= 0, [230]= 0, [231]= 0, [232]= 0, [233]= 0, [234]= 0, [235]= 0, [236]= 0, [237]= 0, [238]= 0, [239]= 0, [240]= 0, [241]= 0, [242]= 0, [243]= 0, [244]= 0, [245]= 0, [246]= 0, [247]= 0, [248]= 0, [249]= 0, [250]= 0, [251]= 0, [252]= 0, [253]= 0, [254]= 0, [255]= 0 } return dragon_warrior_monsters_2_module
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
tetora_X wrote:
I've been making DWM2 TAS and find a glitch that can call debug mode. We can go straightly to ending credit from the debug mode. But it's uncontrollable for me. I once succeeded to go debug mode, when i had tested it. However, I couldn't reproduce it... and i don't have enough knowledge to analyze such a complex thing.
Link to video https://tasvideos.org/UserFiles/Info/638414057887586707 I finally got the debug menu to popup after a decade. It doesn't seem to help, since the game crashes on choosing the credits.
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Link to video Since I can't seem to get a high follower index in (U) (every attempt so far gets me a value of 51, which is worthless), I tried making a run on U instead. It still uses save bugs, but it at least shows more of the game? I'm not sure if it should obsolete the longer run, but I think there's some value in this, given a 100% run would probably still need to actually visit other worlds. I'm not exactly sure how to proceed with the tournament however. The lamp fight would simply be using the last cancelled run strat. Pirate should be beatable using OoB to get to last area; the long run for some reason doesn't do this. Ice/Sky can be mostly glitched using save bugs. Not sure how to beat Limbo.
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
https://tasvideos.org/UserFiles/Info/638650778628629060 I was investigating the use of save/reset to get npcs to appear in different places. On the U version, I found out that Darck's overworld ID at CB9E happened to be 1. This value appears for a a npc in Oasis village 1 (Kalka), as well as an npc in Water village 1 (Yold). None of the npcs in GreatLog appear to have this id. By saving at Yold, then save/reset at Limbo Shrine, I can talk to an invisible NPC to trigger the fight with Darck. This saves 2075 frames (00:34.58) since I don't need to buy the journal, nor visit Limbo itself outside the shrine now. For some reason, on J, the IDs are different, but it still works. On reset however, an invisible npc would appear at your house you can talk to to access the arena. I wasn't able to find a npc in GreatLog that would allow me to skip almost everything in Oasis. I did find out that saving in Asiya top left corner, then save/reset in GreatLog would give me an npc that can be talked to repeatedly for tiny medals in U at least.