Posts for jlun2

Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
endrift wrote:
Please try reproducing all of these in the latest standalone nightly. 0.5 is coming out soon and as much testing with a nightly as possible is great.
I can't easily reproduce it, but it appears on this movie file: http://tasvideos.org/userfiles/info/33467226742199528 It happened during the battle. Here's a savestate for BizHawk 1.11.7 before the battle https://drive.google.com/open?id=0B-2O13fpsnI4UVNkZURlenlrazQ Youtube: Link to video The bug is at 13 seconds in; The audio is supposed to sound like this. Sorry about that. It also appears every now and then, but often went I'm not recording a movie.
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
On BizHawk 1.11.7, every now and then transitioning to a different background music for "Keitai Denjuu Telefang 2 - Speed (Japan).gba" causes the audio to glitch up and some of the instruments to not play. I'm not sure if it's part of the game or not, but a search gave me this: http://s15.zetaboards.com/Tulunk_Village/topic/515554/1
Telefang 2 sounds different in every emulator... ...that I use. It's rather annoying, without having the game, it's hard to tell which emulator is most accurate, and I'm picky about that type of thing. I tried VisualBoyAdvance, plus a version with different sound (this one is really meant for GB/GBC), as well as VisualBoyAdvance-M, a beta version with some bug fixes but also has some new bugs, NO$GBA, and Boycott Advance. With the exception of the first two emulators, Telefang 2's music sounded completely glitched, and sounded different on each one as well. But even if you compare the former two, they sound different. So which one is most accurate? I'm guessing it's the very first one, since it's the best sounding. The second one sounds too much like a Game Boy Color. Can anybody who has a copy of Telefang 2 tell which emulator is the most accurate? It would help me a lot and I would really appreciate it. Thanks.
Which seems to imply it's likely an emulation error.
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
These are the mandatory boss battles that occur: Boss 1 (ID 1?) - Rival (Gyuun (Basic) & cohorts) PhoneID 10 110 48 GameID 190 117 35 Levels 11 8 6 Health 48 17 15 Speed 28 13 13 Attack 19 13 14 Defence 19 21 14 Denma 32 18 12 BOSS 2 (ID 1) - Anpipit (Desert) & cohorts PhoneID 43 156 104 GameID 30 165 111 Levels 16 12 11 Health 48 26 35 Speed 21 28 15 Attack 26 22 20 Defence 26 20 18 Denma 40 22 11 BOSS 3 (ID 2) - Gymnos & cohorts PhoneID 159 158 157 GameID 168 167 166 Levels 22 16 12 Health 77 44 27 Speed 32 20 17 Attack 41 26 19 Defence 35 25 21 Denma 33 34 22 BOSS 4 (ID 3) - Cabot (Basic) & cohorts PhoneID 55 124 0 GameID 45 131 0 Levels 22 19 0 Health 63 49 0 Speed 38 35 0 Attack 34 31 0 Defence 43 29 0 Denma 31 38 0 BOSS 5 (ID 4) - Mystacea (Basic) & cohorts PhoneID 85 30 64 GameID 75 17 54 Levels 24 20 20 Health 77 44 53 Speed 40 30 18 Attack 36 30 30 Defence 35 40 40 Denma 41 23 28 BOSS 6 (ID 5) - Mentalis (Basic) & cohorts PhoneID 26 49 63 GameID 13 53 36 Levels 28 22 25 Health 85 51 48 Speed 39 42 28 Attack 48 37 38 Defence 40 37 35 Denma 47 43 36 BOSS 7,8,9 (ID 6) - Hermit (Desert) & cohorts PhoneID 99 99 0 GameID 104 104 0 Levels 31 31 0 Health 85 54 0 Speed 48 48 0 Attack 54 54 0 Defence 45 45 0 Denma 61 54 0 BOSS 10 (ID 7) - Hermit (Desert) w/o cohorts PhoneID 99 0 0 GameID 104 0 0 Levels 31 0 0 Health 85 0 0 Speed 48 0 0 Attack 54 0 0 Defence 45 0 0 Denma 61 0 0 BOSS 11 (ID 8) - Demerus (Desert) & cohorts PhoneID 109 99 99 GameID 116 104 104 Levels 42 35 35 Health 109 57 57 Speed 57 53 53 Attack 63 57 57 Defence 58 50 50 Denma 56 57 57 BOSS 12 (ID 2?) - Rival v2 (Gyuun (Aquatic) & cohorts) PhoneID 12 57 25 GameID 192 12 47 Levels 42 40 40 Health 98 65 67 Speed 57 46 55 Attack 59 56 57 Defence 58 56 56 Denma 57 61 44 BOSS 13 (ID 3?) - Rival v3 (Gyuun (Forest) & cohorts) PhoneID 13 31 31 GameID 193 18 18 Levels 52 47 47 Health 114 65 65 Speed 63 57 57 Attack 72 64 64 Defence 70 64 64 Denma 65 70 70 BOSS 14 (ID 10) - Easydog & cohorts PhoneID 133 136 48 GameID 142 145 35 Levels 52 48 46 Health 147 80 77 Speed 67 65 86 Attack 75 73 69 Defence 72 68 70 Denma 64 64 80 BOSS 15 (ID 11) - Ryuuguu PhoneID 135 0 0 GameID 144 0 0 Levels 56 0 0 Health 148 0 0 Speed 72 0 0 Attack 82 0 0 Defence 78 0 0 Denma 89 0 0 BOSS 16 (ID 12) - Enteioh & cohorts PhoneID 157 137 94 GameID 166 146 97 Levels 58 55 50 Health 160 82 74 Speed 77 66 61 Attack 74 71 72 Defence 79 75 69 Denma 98 55 51 BOSS 17 (ID 13) - Diabolos (Natural-2) & cohorts PhoneID 175 136 137 GameID 199 145 146 Levels 80 72 72 Health 221 138 110 Speed 131 113 102 Attack 135 106 95 Defence 144 99 96 Denma 150 93 96 Using the level 47 mentioned above, I believe it's possible to make it at least to boss 12 without problems. It becomes a lot more difficult however, since the last 5 bosses all have over 100 HP. I might have to check if it's worth recruit the level 28 due to this. Edit: https://docs.google.com/spreadsheets/d/1VcsEQ5pH-WzHRjSN0XP5qRe1-xCY1UOZ8uTsFZOF7R4/edit?usp=sharing All fights + notes Edit:Download telefang2.lua
Language: lua

memory.usememorydomain("IWRAM") --[[ Example for the below: 41F2 - EID 41F3 - ELV 41F4 - EHP(Current) 41F5 - EHP(Max) 41F6 - EDP 41F7 - ESPD 41F8 - EATK 41F9 - EDEF 41FA - ESPEC 41FC - Nature 41FD - FD 4207 - 1st move 4209 - 1st move power 4210 - 2nd move 4211 - 2nd move power 4218 - 3rd move 4219 - 3rd move power 4220 - 4th move 4221 - 4th move power 4228 - next denjuu's turn ]]-- local Map = {} --Because some of the maps have values all over the place function assign_multi(string,...) for i, v in ipairs(arg) do Map[v] = string end end --Check if power or speed version; they have addresses in different places function version() if memory.read_u32_le(0x0000A8,"ROM") == 0x574F5032 then return "Power" elseif memory.read_u32_le(0x0000A8,"ROM") == 0x45505332 then return "Speed" else return "NA" end end --checks the mouse position during a click relative to the client and see if its within some range function get_mouse_pos(x,y,width,height) mx = input.getmouse().X my = input.getmouse().Y --input.getmouse() is already relative to client :) if (mx >= x and mx <x>= y and my <= y+height) then return true end return false end assign_multi("Bandit's Hideout",98,99,100,101,102,103,104) assign_multi("Barusuta Forest",63,64,65,66,67,68,69,70) assign_multi("Bijinia Desert",75,76,77,78) assign_multi("Bijinia Village",20,46,97,131,132) assign_multi("Chiawata Cave",49,50,51,52,53) assign_multi("Chiawata Forest",2,3,133) assign_multi("Chiawata Village",47,87,139,167) assign_multi("Helchika Desert",71,72,73,74) assign_multi("Helchika Village",96,129,130,140) assign_multi("Hiero Loophole",25,26,27,28) assign_multi("Holy Land Iasuka",136,142,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164) assign_multi("Human World",48,128,134,143,165) assign_multi("Kamishino Ruins",106,107,108,109,110,111,112,113,114,115) assign_multi("Karatsumu Cave",116,117,118,119,120,121,122,123,124,125,126,127) Map[82] = "Kiwatora Coast" assign_multi("Kiwatora Field",6,7) assign_multi("Kiwatora Village",19,45,81,95) assign_multi("Kufumoku Mountain",15,23,24) assign_multi("Meribaro Forest",4,5) assign_multi("Meribaro Village",18,44,80,93,170) assign_multi("Takedama Cave",21,22) Map[0] = "Takedama Forest" assign_multi("Takedama Village",16,39,40,41,42,138) assign_multi("Tekku Sea",135,137) assign_multi("Tokaribe Coast",83,84,86) assign_multi("Tokaribe Field",1,85) assign_multi("Tokaribe Village",17,43,79,94,169) assign_multi("Ujichichi Mountain",29,30,31,32,33,34,35,36,37,38,89,90,91,92) assign_multi("Uraani Cave",54,55,56,57,58,59,60,61,62,105) assign_multi("Uraani Forest",8,9,11,12,13,14) Map[10] = "Uraani Tides" assign_multi("Uraani Village",88,141,166,168) local Picture_Book = { [0] = 15,[1] = 16,[2] = 17,[3] = 176,[4] = 177,[5] = 18,[6] = 19,[7] = 20,[8] = 21,[9] = 22, [10] = 23,[11] = 24,[12] = 25,[13] = 26,[14] = 27,[15] = 28,[16] = 29,[17] = 30,[18] = 31,[19] = 32, [20] = 37,[21] = 38,[22] = 39,[23] = 40,[24] = 33,[25] = 34,[26] = 35,[27] = 36,[28] = 41,[29] = 42, [30] = 43,[31] = 44,[32] = 45,[33] = 46,[34] = 47,[35] = 48,[36] = 49,[37] = 178,[38] = 179,[39] = 180, [40] = 50,[41] = 51,[42] = 52,[43] = 53,[44] = 54,[45] = 55,[46] = 56,[47] = 57,[48] = 58,[49] = 59, [50] = 60,[51] = 61,[52] = 62,[53] = 63,[54] = 64,[55] = 65,[56] = 66,[57] = 67,[58] = 68,[59] = 69, [60] = 70,[61] = 71,[62] = 72,[63] = 73,[64] = 74,[65] = 75,[66] = 76,[67] = 77,[68] = 78,[69] = 79, [70] = 80,[71] = 81,[72] = 82,[73] = 83,[74] = 84,[75] = 85,[76] = 86,[77] = 87,[78] = 181,[79] = 182, [80] = 183,[81] = 184,[82] = 185,[83] = 186,[84] = 187,[85] = 88,[86] = 89,[87] = 90,[88] = 188,[89] = 189, [90] = 190,[91] = 191,[92] = 192,[93] = 193,[94] = 91,[95] = 92,[96] = 93,[97] = 94,[98] = 194,[99] = 195, [100] = 95,[101] = 96,[102] = 97,[103] = 98,[104] = 99,[105] = 100,[106] = 101,[107] = 102,[108] = 103,[109] = 196, [110] = 197,[111] = 104,[112] = 105,[113] = 106,[114] = 107,[115] = 108,[116] = 109,[117] = 110,[118] = 111,[119] = 112, [120] = 113,[121] = 114,[122] = 115,[123] = 116,[124] = 117,[125] = 118,[126] = 119,[127] = 120,[128] = 121,[129] = 122, [130] = 123,[131] = 124,[132] = 125,[133] = 198,[134] = 199,[135] = 126,[136] = 127,[137] = 128,[138] = 129,[139] = 130, [140] = 131,[141] = 132,[142] = 133,[143] = 134,[144] = 135,[145] = 136,[146] = 137,[147] = 138,[148] = 139,[149] = 140, [150] = 141,[151] = 142,[152] = 143,[153] = 144,[154] = 145,[155] = 146,[156] = 147,[157] = 148,[158] = 149,[159] = 150, [160] = 151,[161] = 152,[162] = 153,[163] = 154,[164] = 155,[165] = 156,[166] = 157,[167] = 158,[168] = 159,[169] = 160, [170] = 161,[171] = 162,[172] = 163,[173] = 164,[174] = 165,[175] = 166,[176] = 167,[177] = 168,[178] = 169,[179] = 170, [180] = 0,[181] = 1,[182] = 2,[183] = 3,[184] = 4,[185] = 5,[186] = 6,[187] = 7,[188] = 8,[189] = 9, [190] = 10,[191] = 11,[192] = 12,[193] = 13,[194] = 14,[195] = 171,[196] = 172,[197] = 173,[198] = 174,[199] = 175} --Attack names local Attacks = { [0] = "????",[1] = "Spark",[2] = "Falling Star",[3] = "Pillar of Fire",[4] = "Small Fire",[5] = "Will-o\'-the-Wisp",[6] = "Flame Shot",[7] = "Raging Fire",[8] = "Fire Wheel",[9] = "Disk Cutter", [10] = "Wheel",[11] = "Chainsaw",[12] = "Drill",[13] = "Rocket Punch",[14] = "Twin Drill",[15] = "Rotation Cutter",[16] = "Spiral Cutter",[17] = "Waterfall",[18] = "Soap Ball",[19] = "Water Drop", [20] = "Water Gun",[21] = "Wave Crash",[22] = "Squall",[23] = "Icicle Trap",[24] = "Watersprout",[25] = "Rock Claw",[26] = "Boulder Roll",[27] = "Sand Vortex",[28] = "Boulder Ball",[29] = "Boulder Avalanche",[30] = "Shake-Out", [31] = "Falling Rocks",[32] = "Small Quake",[33] = "Vaccum Cutter",[34] = "Shock Wave",[35] = "Whirlwind",[36] = "Gust",[37] = "Flap",[38] = "Tornado",[39] = "Gale", [40] = "Kamaitachi",[41] = "Ion Ball",[42] = "Positive Electricity",[43] = "Electric Claw",[44] = "Discharge",[45] = "Electric Shock",[46] = "Electric Arrow",[47] = "Big Electric Current",[48] = "Electric Field",[49] = "Claw", [50] = "Iron Claw",[51] = "Scales",[52] = "Ring",[53] = "Bite",[54] = "Beak",[55] = "Kicking",[56] = "Continuous Kicking",[57] = "Sabre",[58] = "Tail",[59] = "Suddenness (1)", [60] = "Suddenness (2)",[61] = "Jump",[62] = "Tentacle",[63] = "Numb Tentacle",[64] = "Body Blow",[65] = "Spit Spray",[66] = "Headbutt",[67] = "Suddenness (3)",[68] = "Horn",[69] = "Iron Horn", [70] = "Wing",[71] = "Thorn",[72] = "Rush",[73] = "Drain",[74] = "Bloodsuck",[75] = "Strike",[76] = "Razor Punch",[77] = "Hammer Punch",[78] = "Lick",[79] = "Needle", [80] = "Suddenness (4)",[81] = "Scissors",[82] = "Petal",[83] = "Feather Sabre",[84] = "Feather Knife",[85] = "Acupuncture",[86] = "Poison Sting",[87] = "Numbing Sting",[88] = "Hoof",[89] = "Suddenness (5)", [90] = "Suddenness (6)",[91] = "Whiplash",[92] = "Electric Wire",[93] = "Digestive Fluids",[94] = "Melting Fluids",[95] = "Stab",[96] = "Continuous Stab",[97] = "Ice Rock",[98] = "Big Wave",[99] = "Whirling Tides", [100] = "Ice Bullet",[101] = "Blizzard",[102] = "Big Water Pressure",[103] = "Big Tsunami",[104] = "Ion Beam",[105] = "Small Bolt",[106] = "Plasma Laser",[107] = "Lightning Strike",[108] = "Thunder Storm",[109] = "Mega Bolt", [110] = "Electric Hell",[111] = "Ibo Ibo Missile",[112] = "Gatling Gun",[113] = "Rapid-Fire Missile",[114] = "Bazooka",[115] = "Drill Missile",[116] = "Homing Missile",[117] = "Bombing",[118] = "Wave Attack",[119] = "Aura Wave", [120] = "Sandstorm",[121] = "Big Stream Pressure",[122] = "Vacuum Hole",[123] = "Hurricane",[124] = "Black Hole",[125] = "Heat Beam",[126] = "Small Burn",[127] = "Small Flame",[128] = "Flamethrower",[129] = "Fire Breath", [130] = "Big Burn",[131] = "Suddenness (7)",[132] = "Bomb Rock",[133] = "Small Rock",[134] = "Sand Prison",[135] = "Mega Quake",[136] = "Mega Rock",[137] = "Meteor Drop",[138] = "Diamond Rain",[139] = "Mushroom Bomb", [140] = "Egg Bomb",[141] = "Bomb",[142] = "Wave Beam",[143] = "Beam Light",[144] = "Blaster",[145] = "Suicide Attack",[146] = "String Discard",[147] = "Adhesive Liquid",[148] = "Smokescreen",[149] = "Flash", [150] = "Dust Cloud",[151] = "Recovery",[152] = "Big Recovery",[153] = "Shout",[154] = "Stare",[155] = "Glare",[156] = "Quick Step",[157] = "Speed Up",[158] = "Charging",[159] = "Big Charging", [160] = "Ultrasonic",[161] = "Curse Song",[162] = "Iron Defense",[163] = "Venom",[164] = "Poison Gas",[165] = "Numb Gas",[166] = "Cure",[167] = "Alarm Clock",[168] = "Roar",[169] = "Hot Wind", [170] = "Shrill Voice",[171] = "Cold Air",[172] = "Sleep Gas",[173] = "Lullaby",[174] = "Meditate",[175] = "Denma Barrier",[176] = "Persist",[177] = "Support",[178] = "Defense",[179] = "Shield", [180] = "Blessing",[181] = "Contemplate",[182] = "Hide",[183] = "Dive",[184] = "Skin Thicken",[185] = "Avoid",[186] = "Spore Shed",[187] = "Tongue Sticking Out",[188] = "Provoke",[189] = "Denma Seal", [190] = "Denma Drain",[191] = "Twister Song",[192] = "Energy Break",[193] = "Mega Break",[194] = "Count Down",[195] = "Strawberry Kiss",[196] = "Injection Plug",[197] = "Deflation Spiral",[198] = "Hot Bath",[199] = "Nove Smasher"} --List of Denjuu by names, sorted by Index local Denjuu = { [0] = "Muscovy (Basic)",[1] = "Muscovy (Natural)",[2] = "Muscovy (Aquatic)",[3] = "Major (Basic)",[4] = "Major (Grassland)",[5] = "Fraby (Basic)",[6] = "Fraby (Mountain)",[7] = "Fraby (Sky)",[8] = "Kagu (Basic)",[9] = "Kagu (Natural)", [10] = "Purchera (Basic)",[11] = "Purchera (Sky)",[12] = "Purchera (Forest)",[13] = "Mentalis (Basic)",[14] = "Mentalis (Natural)",[15] = "Mentalis (Forest)",[16] = "Mentalis (Grassland)",[17] = "Karinota (Basic)",[18] = "Karinota (Grassland)",[19] = "Karinota (Mountain)", [20] = "Chukar (Basic)",[21] = "Chukar (Natural)",[22] = "Chukar (Mountain)",[23] = "Chukar (Aquatic)",[24] = "Laperouse (Basic)",[25] = "Laperouse (Natural)",[26] = "Laperouse (Desert)",[27] = "Laperouse (Grassland)",[28] = "Anpipitto (Basic)",[29] = "Anpipitto (Sky)", [30] = "Anpipitto (Desert)",[31] = "Ruficors (Basic)",[32] = "Ruficors (Grassland)",[33] = "Ruficors (Aquatic)",[34] = "Cotta (Basic)",[35] = "Cotta (Natural)",[36] = "Cotta (Desert)",[37] = "Rupicola (Basic)",[38] = "Rupicola (Grassland)",[39] = "Rupicola (Sky)", [40] = "Willcock (Basic)",[41] = "Willcock (Natural)",[42] = "Willcock (Forest)",[43] = "Skrippa (Basic)",[44] = "Skrippa (Aquatic)",[45] = "Cabot (Basic)",[46] = "Cabot (Natural)",[47] = "Makyuretto (Basic)",[48] = "Makyuretto (Natural)",[49] = "Makyuretto (Grassland)", [50] = "Makyuretto (Forest)",[51] = "Coronet (Basic)",[52] = "Coronet (Aquatic)",[53] = "Coronet (Grassland)",[54] = "Tataupa (Basic)",[55] = "Tataupa (Desert)",[56] = "Tataupa (Forest)",[57] = "Chigomozu (Basic)",[58] = "Chigomozu (Natural)",[59] = "Koikaru (Basic)", [60] = "Koikaru (Natural)",[61] = "Koikaru (Forest)",[62] = "Pewee (Basic)",[63] = "Pewee (Natural)",[64] = "Pewee (Aquatic)",[65] = "Pewee (Mountain)",[66] = "Chapmani (Basic)",[67] = "Chapmani (Natural)",[68] = "Hyuming (Basic)",[69] = "Hyuming (Natural)", [70] = "Hyuming (Mountain)",[71] = "Pamirio (Basic)",[72] = "Pamirio (Natural)",[73] = "Pamirio (Sky)",[74] = "Pamirio (Desert)",[75] = "Mistashi (Basic)",[76] = "Mistashi (Forest)",[77] = "Mistashi (Aquatic)",[78] = "Parrotto (Basic)",[79] = "Parrotto (Natural)", [80] = "Nebularia (Basic)",[81] = "Nebularia (Natural)",[82] = "Granti (Basic)",[83] = "Granti (Nautral)",[84] = "Granti (Desert)",[85] = "Penelope (Basic)",[86] = "Penelope (Aquatic)",[87] = "Penelope (Mountain)",[88] = "Ardea (Basic)",[89] = "Ardea (Natural)", [90] = "Ardea (Forest)",[91] = "Cerator (Basic)",[92] = "Cerator (Natural)",[93] = "Cerator (Mountain)",[94] = "Alpina (Basic)",[95] = "Alpina (Natural)",[96] = "Alpina (Aquatic)",[97] = "Alpina (Sky)",[98] = "Isuka (Basic)",[99] = "Isuka (Grassland)", [100] = "Bicolour (Basic)",[101] = "Bicolour (Natural)",[102] = "Hermit (Basic)",[103] = "Hermit (Natural)",[104] = "Hermit (Desert)",[105] = "Hermit (Grassland)",[106] = "Phoebe (Basic)",[107] = "Phoebe (Aquatic)",[108] = "Phoebe (Desert)",[109] = "Blossom (Basic)", [110] = "Blossom (Mountain)",[111] = "Rabricol (Basic)",[112] = "Rabricol (Natural)",[113] = "Rabricol (Aquatic)",[114] = "Demerus (Basic)",[115] = "Demerus (Natural)",[116] = "Demerus (Desert)",[117] = "Sparsa (Basic)",[118] = "Sparsa (Natural)",[119] = "Sparsa (Forest)", [120] = "Purprea (Basic)",[121] = "Purprea (Sky)",[122] = "Purprea (Grassland)",[123] = "Etopirika (Basic)",[124] = "Etopirika (Natural)",[125] = "Etopirika (Forest)",[126] = "Regulus (Basic)",[127] = "Regulus (Desert)",[128] = "Regulus (Sky)",[129] = "Akretto (Basic)", [130] = "Akretto (Natural)",[131] = "Akretto (Grassland)",[132] = "Akretto (Mountain)",[133] = "Seiran (Basic)",[134] = "Seiran (Mountain)",[135] = "Tectus (Basic)",[136] = "Tectus (Natural)",[137] = "Serrata (Basic)",[138] = "Serrata (Sky)",[139] = "Serrata (Forest)", [140] = "Kaya (T2)",[141] = "Beebalm (T2)",[142] = "Easydog (T2)",[143] = "Ruscus (T2)",[144] = "Ryuuguu (T2)",[145] = "Kanzou (T2)",[146] = "Ornithogalum (T2)",[147] = "Teletel (T2)",[148] = "Dendel (T2)",[149] = "Suguri (T2)", [150] = "Suguline (T2)",[151] = "Saiguliger (T2)",[152] = "Punica (T2)",[153] = "Punisto (T2)",[154] = "Oshe (T2)",[155] = "Barriarm (T2)",[156] = "Bashou (T2)",[157] = "Gentiana (T2)",[158] = "Gonum (T2)",[159] = "Gust (T2)", [160] = "Storm (T2)",[161] = "Tsunonasu (T2)",[162] = "Gigagigearth (T2)",[163] = "Liriope (T2)",[164] = "Lirimonarch (T2)",[165] = "Waratah (T2)",[166] = "Enteiou (T2)",[167] = "Gumi (T2)",[168] = "Gymnos (T2)",[169] = "Gymbaron (T2)", [170] = "Gymzyrus (T2)",[171] = "Gymzatan (T2)",[172] = "Angios (T2)",[173] = "Angigorgo (T2)",[174] = "Angipower (T2)",[175] = "Angioros (T2)",[176] = "Fungus (T2)",[177] = "Fungwar (T2)",[178] = "Funboost (T2)",[179] = "Funblade (T2)", [180] = "Rex (Basic)",[181] = "Rex (Natural-1)",[182] = "Rex (Desert)",[183] = "Rex (Forest)",[184] = "Rex (Natural-2)",[185] = "Doon (Basic)",[186] = "Doon (Natural-1)",[187] = "Doon (Sky)",[188] = "Doon (Aquatic)",[189] = "Doon (Natural-2)", [190] = "Gyuun (Basic)",[191] = "Gyuun (Natural-1)",[192] = "Gyuun (Aquatic)",[193] = "Gyuun (Forest)",[194] = "Gyuun (Natural-2)",[195] = "Diablos (Basic)",[196] = "Diablos (Natural-1)",[197] = "Diablos (Mountain)",[198] = "Diablos (Grassland)",[199] = "Diablos (Natural-2)"} --Addresses I'm interested regarding speed version local Speed = { Enemy = {0x41F2,0x422A,0x4262}, State = 0x042C, Map = 0x4F90, Player_X = 0x4CF8, Player_Y = 0x4CFC, Money = 0x4CF4, Boss = 0x2888, Move = 0x2B06, Story = 0x4DD7, Music = 0x4AE2 --Seems like it's the background music ID; can use this to check if in battle } --Addresses I'm interested regarding power version local Power = { Enemy = {0x4202,0x423A,0x4272}, State = 0x043C, Map = 0x4FA0, Player_X = 0x4D08, Player_Y = 0x4D0C, Money = 0x4D04, Boss = 0x2898, Move = 0x2B16, Story = 0x4DE7, Music = 0x4AF2 } local Enemy_data = { Level, HP_Max, HP_Now, DP, Speed, Attack, Defence, Special, Nature, FD, Friend, Attack1, Attack2, Attack3, Attack4, Next } while true do local Addresses local toggle = 0 local NPC = {x,y,xcam,ycam,state} local num --For NPC while version() ~= "NA" do Addresses = (version() == "Power" and Power or Speed) gui.text(0,45,"BOSS: "..memory.readbyte(Addresses.Boss).." State: "..memory.readbyte(Addresses.State).."Story:"..memory.readbyte(Addresses.Story)) gui.text(0,250,"("..string.format('%.6f',memory.read_u32_le(Addresses.Player_X)/65536.0)..","..string.format('%.6f',memory.read_u32_le(Addresses.Player_Y)/65536.0)..")") gui.text(0,265,"$: "..memory.read_u32_le(Addresses.Money)) gui.text(0,280,"Move: "..memory.readbyte(Addresses.Move)) --Just in case something happens that causes map to go above 170 if Map[memory.readbyte(Addresses.Map)] ~= nil then gui.text(0,235,Map[memory.readbyte(Addresses.Map)].."("..memory.readbyte(Addresses.Map)..")") end --Checking if in battle if (memory.readbyte(Addresses.Music) >= 5 and memory.readbyte(Addresses.Music) <9> 0 and toggle <4> 0 then --gui.drawText(0,30,"E"..toggle..Denjuu[memory.readbyte(Addresses.Enemy[toggle])].."("..memory.readbyte(Addresses.Enemy[toggle])..")".."&"..Denjuu[memory.readbyte(Addresses.Enemy[toggle]+21)].."("..memory.readbyte(Addresses.Enemy[toggle]+21)..")",null,null,10,null,null) gui.drawText(0,30,"E"..toggle.." ID:"..memory.readbyte(Addresses.Enemy[toggle]).." Friend:"..memory.readbyte(Addresses.Enemy[toggle]+21),null,null,10,null,null) gui.drawText(0,40,"LV:"..memory.readbyte(Addresses.Enemy[toggle]+1).." HP:"..memory.readbyte(Addresses.Enemy[toggle]+2).."/"..memory.readbyte(Addresses.Enemy[toggle]+3).." DP:"..memory.readbyte(Addresses.Enemy[toggle]+4).." ",null,null,10,null,null) gui.drawText(0,50,"SPD:"..memory.readbyte(Addresses.Enemy[toggle]+5).." ATK:"..memory.readbyte(Addresses.Enemy[toggle]+6).." DEF:"..memory.readbyte(Addresses.Enemy[toggle]+7).." SPEC:"..memory.readbyte(Addresses.Enemy[toggle]+8).." ",null,null,10,null,null) gui.drawText(0,60,Attacks[memory.readbyte(Addresses.Enemy[toggle]+22)].." | "..Attacks[memory.readbyte(Addresses.Enemy[toggle]+30)].." ",null,null,10,null,null) gui.drawText(0,70,Attacks[memory.readbyte(Addresses.Enemy[toggle]+38)].." | "..Attacks[memory.readbyte(Addresses.Enemy[toggle]+46)].." ",null,null,10,null,null) end if toggle == 4 then for i=1,3 do if memory.readbyte(Addresses.Enemy[i]+1) > 0 then --Since id can be 0, check if level is greater than 0 instead. Also make sure it only appears during battle gui.drawText(0,10+(20*i),"E"..i.." ID:"..memory.readbyte(Addresses.Enemy[i]).." LV:"..memory.readbyte(Addresses.Enemy[i]+1).." HP:"..memory.readbyte(Addresses.Enemy[i]+2).."/"..memory.readbyte(Addresses.Enemy[i]+3).." DP:"..memory.readbyte(Addresses.Enemy[i]+4),null,null,10,null,null) gui.drawText(0,20+(20*i),"SPD:"..memory.readbyte(Addresses.Enemy[i]+5).." ATK:"..memory.readbyte(Addresses.Enemy[i]+6).." DEF:"..memory.readbyte(Addresses.Enemy[i]+7).." SPEC:"..memory.readbyte(Addresses.Enemy[i]+8),null,null,10,null,null) end end end end --Checking if overworld music is playing to display npc data if memory.readbyte(Addresses.Music) >= 17 and memory.readbyte(Addresses.Music) <= 43 then for i = (version() == "Power" and 0x34E0 or 0x34D0), 0x3810, 0x20 do --Power and Speed is offsetted by +0x10 difference if memory.readbyte(i) ~= 0 then NPC.xcam = memory.read_u16_le(i+0x2) NPC.ycam = memory.read_u16_le(i+0x4) NPC.x = string.format('%.1f',memory.read_u32_le(i+0xC)/65536.0) NPC.y = string.format('%.1f',memory.read_u32_le(i+0x10)/65536.0) NPC.state = memory.readbyte(i+0x1F) num = math.floor((i-0x34D0)/0x20)+1 --So it would be 1 offset gui.drawText(NPC.xcam-20,NPC.ycam,"X"..NPC.x.." Y"..NPC.y.."s"..NPC.state,null,null,10,null,null) gui.drawText(NPC.xcam-5,NPC.ycam-20,num,null,null,10,null,null) end end gui.text(0,295,"Num: "..num) end emu.frameadvance() end emu.frameadvance() end
Edit: So...apparently the ID addresses are correct, but it uses a different number than the one shown on the phone. Bleh. Edit2: Added map names; works for all 171 maps. Also supports power version now. Edit3: Added Denjuu + Attack names, and allowed multiple ways to display data Edit4: Added Overworld object/npc display + check if in battle using music
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
That was a nice run. Also to anyone who wonders how does the lag affect the game, it's mentioned on this post: Post #439412
MUGG wrote:
Here is a comparison between the current TAS and if the bug was used. All time stamps are from VBA v19-23, so there might be 1 or 2 frames difference to bizhawk. (VBA input is delayed) Timing is from first frame of a room where input is accepted, until first frame of the next room where input is accepted. That way, score calculation is taken into consideration.
Room      Time(OldTAS)         Time(withBug)		TimeSaved  Notes

01        443  (624-1067)      -					   0			 Can't do bug
02        621  (1067-1688)	  594  (1067-1661)	27
03        631  (1688-2319)	  594  (1688-2282)	37
04        636  (2319-2955)	  594  (2319-2913)	42
05        608  (2955-3563)	  -					   0			 Can't do bug
06 +1Up   550  (3563-4113)	  -					   0			 Can't do bug
07        642  (4113-4755)	  593  (4113-4706)	49
08        686  (4755-5441)	  593  (4755-5348)	94		   Not verified. predicting 593 is possible.
09        757  (5441-6198)	  593  (5441-6034)	164		  Not verified. predicting 593 is possible.
10        617  (6198-6815)	  593  (6198-6791)	24		   Not verified. predicting 593 is possible.
11        733  (6815-7548)	  -					   0			 Can't do bug
12 +1Up   844  (7548-8392)	  -					   0			 Can't do bug
13        649  (8392-9041)	  594  (8392-8986)	55		
14        533  (9041-9574)	  -					   0			 Can't do bug
21 +1Up   581  (9574-10155)	 -					   0			 Can't do bug
22        610  (10155-10765)	594  (10155-10749) 16		   Not verified. Predicting 594 is possible.
23        639  (10765-11404)	-					   0			 Can't do bug
24 +1Up   759  (11404-12163)	-					   0			 Can't do bug
25        761  (12163-12924)	594  (12163-12757) 167		  Not verified. Predicting 594 is possible.
26        575  (12924-13499)	-					   0			 Doesn't save time (575 is faster than 594)
27        639  (13499-14138)	-					   0			 Can't do bug
32 +1Up   529  (14138-14667)	-					   0			 Can't do bug
33        733  (14667-15400)	593  (14667-15260) 140		  Not verified. Predicting 593 is possible.
34        610  (15400-16010)	593  (15400-15993) 17		   Not verified. Predicting 593 is possible.
35        511  (16010-16521)	-					   0			 Timed until score changes. Can't do bug

LCD lag is not considered since this testing was done on old VBA. I tested on newer VBA and the LCD lag is 35 frames there. In other words, the transition lag that took 1 frame on old VBA takes 35 frames on new VBA. Doing the bug causes LCD lag to happen one additional time, so 34 frames have to be added to the TimeSaved potential. When the bug doesn't save at least 35 frames, there is no use doing it.
Room      Time(OldTAS)         Time(withBug)		TimeSaved

03        631  (1688-2319)	  594  (1688-2282)	3		
04        636  (2319-2955)	  594  (2319-2913)	8
07        642  (4113-4755)	  593  (4113-4706)	15
08        686  (4755-5441)	  593  (4755-5348)	60		
09        757  (5441-6198)	  593  (5441-6034)	130		
13        649  (8392-9041)	  594  (8392-8986)	21		
25        761  (12163-12924)	594  (12163-12757) 133		
33        733  (14667-15400)	593  (14667-15260) 106		

00:13.93 sec saved (when sticking with VBA19~23) 00:07.97 sec saved (when switching from VBA19~23 to VBA24m → added LCD lag) Bizhawk actually seems to have 37 LCD lag frames. So we subtract another 2 frames:
Room      Time(OldTAS)         Time(withBug)		TimeSaved

03        631  (1688-2319)	  594  (1688-2282)	1		
04        636  (2319-2955)	  594  (2319-2913)	6
07        642  (4113-4755)	  593  (4113-4706)	13
08        686  (4755-5441)	  593  (4755-5348)	58		
09        757  (5441-6198)	  593  (5441-6034)	128		
13        649  (8392-9041)	  594  (8392-8986)	19		
25        761  (12163-12924)	594  (12163-12757) 131		
33        733  (14667-15400)	593  (14667-15260) 104		

00:07.70 sec saved (when switching from VBA19~23 to Bizhawk → added LCD lag) Finally, we take into consideration the life management:
Room           Lives

Start of game  Have 5 lives
03 (Bug)       Have 4 lives       
04 (Bug)       Have 3 lives
06 (+1up)      Have 4 lives
07 (Bug)       Have 3 lives      
08 (Bug)       Have 2 lives
09 (Bug)       Have 1 life
12 (+1up)      Have 2 lives
13 (Bug)       Have 1 life
21 (+1up)      Have 2 lives
24 (+1up)      Have 3 lives
25 (Bug)       Have 2 lives
33 (Bug)	    Have 1 life
So it should be all good. No continues are needed. One continue would have taken 33 frames in old VBA, and probably 107 or so on Bizhawk. A new TAS should be 04:33.37 or better. EDIT: Actually, I forgot that LCD lag is added in places that aren't improved, too. So the new time will probably be much higher than the current time...
Post subject: Site address list's domain
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
How should I format memory addresses for GBA games for the site's list? For things like NES, GBC, etc,. there's the ability to change the domain to IWRAM, ROM, etc. However, for the GBA (and maybe other consoles, not sure), for some reason, it does not allow such feature. Should I add addresses as (for example) 3002870, or 2870 and assume I would remember the domain later when I come back to it?
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
So I finally made a playthrough using cheats so that even if I lose I would still "win" in order to see how long the game would at least be without battles. It took over 1 hour and 30 minutes. http://tasvideos.org/userfiles/info/33467226742199528 Used BizHawk 1.11.7 I predict with battles, it would probably add an hour. Edit: Bot script for 1.11.7
memory.usememorydomain("IWRAM")

local frame_start = emu.framecount()

function waitframe(frame)
	while (frame >= 0) do
		emu.frameadvance()
		frame = frame-1
	end
end
--[[Start the script as you select an opponent to attack
Algorithim:
1. Record current frame
2. Make a savestate
3. Press "A"
4. Advance 100 frames
5. Check to see if attack hit/missed. If missed, skip to step 7. If hit proceed to next step
6. Check if it had critical hit. If so stop. If not, continue. Don't check if move is ID 0xC2
7. Load the state
8. Advance 1 frame
9. Repeat from step 2
]]--
while true do
	local frame_now = emu.framecount()
	local frame_dif = 0	--difference between this frame and start frame
	if (frame_dif ~= (frame_now - frame_start)) then
		savestate.saveslot(1)
	end
	joypad.set({A = 1})
	emu.frameadvance()
	waitframe(100)
	console.log("Reached 1")
	if memory.readbyte(0x2C14) == 61 then
		break 
	else
		frame_dif = frame_dif + 1
		savestate.loadslot(1)
		console.log("Dif"..(frame_now - frame_start))
		console.log("Frame now: "..frame_now)
		--console.log("Reached 2")
	end
	emu.frameadvance()
end
Will expand on it.
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Sorry to bump, but in terms of BizHawk, what would be better? Having a script with tons of features all packed into one, or make them into separate lua files and run them simultaneously? Talking in terms of performance and manage-ability.
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
1. Start the game 2711 - Drake & Josh (U)(Rising Sun).gba 2. Open Ram Watch 3. Set to search "Not equal to" and "previous value" 4. Search once. Note the addresses and change count 5. Advance a frame or so; the addresses would have the same value yet the change count keeps rising. This happens on both 1.11.7 and 1.11.6, along with both GBA cores.
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Does Game & Watch Gallery games for the gameboy count? Also I recall some such as a sonic one from a McDonalds kid's toy, but don't know their names.
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
So apparently there's actually a "Maximum kills" movie category. Can someone please add that to this movie?
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
We actually do have such a thing: http://tasvideos.org/Movies-C2005Y.html It's not the most popular category though, and also quite obscure, given how the Oddysee run wasn't even tagged such along with this thread.
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
1. Congrats on finally getting this accepted! 2. I haven't checked the 10 frames 1.11.7 version, but how spliceable was it?
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Try and find out what does the difficulty actually do first; it's completely possible to have more differences than timer/hp.
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Fog wrote:
feos wrote:
There's a started port of ppsspp in bizhawk, dunno what would be the percentage of completion, but isn't it easier to base on something already started?
That port is quite old, and I feel it's better to implement tools within the emulator itself, like Dolphin.
But no TAStudio support then, unless it already exists there and I was unaware.
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
jlun2 wrote:
http://dehacked.2y.net/microstorage.php/info/909917951/test2.dsm Wrong warped from chapter 14 to chapter 9. No idea why it happened. Delaying 1 frame prevents that.
Link to video Encoded in hopes someone might figure out something one day.
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
jlun2 wrote:
I found this old post: Post #394464 I'm not sure how applicable it is to DS games in general, but it seems common enough to place here for future reference.
With the help of Invariel, we managed to get 2 formulas: NPCs and your movement make the rng go like this rand = (rand * 1103515245 + 12345) % 4294967296; and simply reloading a stage does this: rand = (rand * 2603963141 + 1051550459) % 4294967296; This was found by using the trick mentioned from the post, then plugging in x,y, and a "z" that I assumed to be 2^32 onto a script and display the next 10 results. It ended up matching. where rand is at 0x2133DF4. This was found by first finding the addresses associated with the random event, in this case the safe password. Then assumed the value keeps changing, and searched for "not equal to previous value" for each time the password changed until the search result was narrowed to < 100 results. Then froze each one and manually checked if it had any effect on the password. The steps for the formula (stage reload): 1. Set 2133DF4 to 0 2. Reload the stage (advances rng once) 3. Record the value. It was 3EAD62FB (1051550459 in decimal) 4. Set 2133DF4 to 1 5. Reload the stage 6. Record the value. It was D9E2B600 (-639453696 in decimal signed) (3655513600 in decimal unsigned) 7. The formula for LRC is rand = ((rand * x) + y)%z step 3 gave y. subtract step 6 unsigned value with step 3s to get x. This gave x = 2603963141 8. z is usually the number of bits or some power of 2. Make a script in any programming language you want. Plug in the values for x, y, z and loop it a number of times. If it matches the game it's correct. Sample:
file = io.open("test.txt", "a")
	io.output(file)
	x = 2603963141
	y = 1051550459
	z = 4294967296
	rng = 0
	for i = 0,10 do
		newrng = ((rng * x)+y)%z
		io.write(string.format('%.8x',newrng)..","..newrng.."\n")
		rng = newrng
	end
	io.close(file)
With that said, now the question is: given the RNG and the values that the RNG assigns, how does one find the formula for that? Here's a list of 10,000 values of the RNG and the password it gives https://drive.google.com/open?id=0B-2O13fpsnI4bGdJZWo1MWdDZWs The left column is the RNG value and the right column is the password. How do they relate? Thanks for all the help so far btw! :)
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
I found this old post: Post #394464 I'm not sure how applicable it is to DS games in general, but it seems common enough to place here for future reference.
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
ResistanceMartyr wrote:
Anyone know if its possible to write a LUA script that draws triangles frame by frame?
Yes. The basic approach would either be make 1 triangle then copy-paste the input multiple times, or make a loop in lua and specify 3 static points to make. Lua api is here: Post #425736 A quick example would be something like
while(true) do
		stylus.set({x=127,y=95,touch=true})
		emu.frameadvance()
		stylus.set({x=127,y=0,touch=true})
		emu.frameadvance()
		stylus.set({x=0,y=95,touch=true})
		emu.frameadvance()
	end
A better method would be keeping track of the pokemon's positions and offsetting x/y based on that.
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Rather than seeing the run 300 times, it's probably better to utilize RAM Watch + frame advance + savestates and concentrate on the parts you're stuck on. I mean using tools on HappyLee's movie, not just your own. http://tasvideos.org/GameResources/NES/SuperMarioBros.html There's an entire page of tricks here, along with memory addresses at the very end.
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Invariel wrote:
2. Transfer memory addresses that you are interested in from RAM Search to RAM Watch. Search will continue to update itself when you reload a state, but I don't know why it clears itself when you load another file (assuming you mean input file and not ROM).
I just found out about this: This apparently allows just what you said. And it only took like 4 years for me to find out. Better late than never. :)
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Would there be any plans for RAM watch? I wish you luck on this. :)
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Legit question: Anyone ever seem to notice RAM usage for Chrome gradually go up despite overall low amount of tabs? Seems to go away if I completely close Chrome and reopen the same tabs, but what's causing the leak?
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
This has nothing to do with the TAS, but what's the best tool assisted way to grind points for the main game?
Experienced Forum User, Published Author, Skilled player (1709)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Can you please at least explain glitches used, since for those who are unfamiliar with speedrun tricks for this game will be completely lost.