Posts for MUGG


Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
http://tasvideos.org/userfiles/info/44154534917594887 Fadeout after the 2nd fight, at frame 2229. I noticed you can fadeout 1 frame earlier by using LR rush, apparently it's hitbox magic or something... Edit: Same with running attack.
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Thank you p4wn3r for telling your story. The thing is if I didn't isolate myself and instead played along with my class, that would be like wearing a false mask, like I'd be lying. It wouldn't be right. There wouldn't be anything to learn from it either, really. And even as nice as it would be to just get along and be friends with my class mates, I simply don't want to. Their priorities and views are backwards; Christmas is oh so important, because it's such a happy event they can spend with their loved ones (and probably have). But nobody cares that I'd spend Christmas alone and sad and that I'm feeling a great deal of pain and regret over my past. I tried to play along with their Christmas plannings but in hindsight, it was not worth it. I realize now I should take care of myself more and save my sanity instead of listening to "don't waggle your foot" and "you gotta do this and that, we need to make this Christmas thing epic together". After all, I'm going to part ways with them again sooner or later. I see myself as a broken person. I talk about it with my therapist and she hasn't been able to help me much. I will try to do what I can, but I'm not going into 2018 feeling like "yeah, let's do this! Will finally do the driver's license test here, and work on the long overdue essay there, and rock this school life". Because oh wait, (as I learned) this first year's degrees don't even count for anything. What a motivator... I'm not only broken, I feel also like I'm an asshole. I need to be an asshole and distance myself from the others to save my sanity.
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
2nd exclamation mark at frame 1750 I continued xy2_'s file (the one that he says saved 128 xpos over mine).
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Yay!
  • Downkick at the beginning slope saves 1~3 frames.
  • When landing from a downkick, let go of pressing right to preserve some speed. Holding right: 928→768 Preserving speed: 928→864→800→768
  • You accelerate faster in the air, so after the beginning LR rush, do a running jump.
  • RNG affects enemy spawn locations(?), enemy actions and damage dealt/received. RNG is advanced by these: ○ Enemy starts a new action (change movement, attack) ○ You start an attack ○ Enemy hits you ○ You hit an enemy ○ LR rush
--- $046C50 (Combined WRAM) (2bytes) = RNG? $0205CC (Combined WRAM) (2bytes) = xspeed $0205C4 (Combined WRAM) (4bytes) = xpos I don't know if these are dynamic. --- I think Bizhawk 2.x should be used if possible (mGBA 0.6). --- I saved 3 frames up to the start of the first fight. http://tasvideos.org/userfiles/info/44066406842318028 (Bizhawk 2.x) I don't know if RNG is optimal.
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Where can I find the current console WRs for Btt, Hrc and Multi-Man melee?
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Link to video Hokuto No Ken - Love Song EDIT: Replaced video since it was removed.
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
The girl I like doesn't seem to care; she's not signalling anything back. I'm basicly an outsider in my class. Through all of December, everyone in my class planned for a Christmas theater play in school. That's nice... But they planned it like every 3 days for up to one hour each time. The times where I went into lessons wanting to actually learn something, I had to sit through discussions of which kind of Christmas tree we get, where to get it, what price, how to dispose of it, if to dispose of it or keep it, who is doing what, when, how, and I'm getting a bigger and bigger headache. Then there are lessons that are canceled in favor of cutting out paper stars or painting cardboard. Overall I feel people in my class like to discuss over every little thing and it leads to endless discussions. And they often laugh over something that I don't feel are enjoyable at all (that's what I mean by "bitter" in my previous post). I'm so tired and stressed out and people in my class don't seem to understand or care, because all they ever tell me is I'm impolite, I should contribute and I shouldn't waggle with my foot when sitting next to them. I decided to not partake in rehearsals for the theater play, where I was supposed to play a role where I quickly run across the stage saying a one liner. Today was the play, and I missed it because my bus didn't come. My class in Whatsapp were like "really?". So, I let them down, but everything fucking sucks so it's not like I can be blamed.
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
FractalFusion wrote:
I noticed though that the URL for this "second test" has "oni-test" in it, whereas the "IQ test" earlier has "iq-test" instead. Maybe this is a clue.
I googled and saw oni could translate to demon/evil spirit. There are demons in the manga after all... Do you think the word oni could refer to those demons? Thanks so far!
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Ok, probably nothing will come of this. But I made a script that kills Mario and pauses when he gets further into the level (=checkpoint bug happened). I will try in different places.
Language: Lua

console.clear() memory.usememorydomain("System Bus") function text(x, y, text, color, backcolor) gui.drawText(x, y, text,color,backcolor,10,"Arial") end local address={ mode=0xFFB3, mapx=0xFFE5, lives=0xDA15, deathtime=0xFFA6, marioy=0xC201 } local progress=memory.read_u8(address.mapx) local didsomething=false function dosomething() progress=memory.read_u8(address.mapx) memory.write_u8(address.deathtime,1) didsomething=true end while true do if memory.read_u8(address.deathtime)>0 then if not didsomething then dosomething() end end if memory.read_u8(address.mode)==0 and didsomething then if memory.read_u8(address.mapx)>progress then client.pause() print("success?") end memory.write_u8(address.marioy,0xB0) didsomething=false end if emu.framecount()%4==0 then memory.write_u8(address.lives,0x09) end keys=joypad.get() keys.Right=true keys.B=true joypad.set(keys) text(70,20,"mode: " .. memory.read_u8(address.mode) .. "\ndeathtime: " .. memory.read_u8(address.deathtime) .. "\nmap x: " .. memory.read_u8(address.mapx),0xFF00B000,0xFFffffff) emu.frameadvance() end
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Ok, here goes. This is going to be long... I only listed bugs that I thought had enough significance. The main reason I'm doing this is to answer the question people keep asking me: How did I find certain bugs?
Bug-----Notes----How I found it
GB Super Mario Land screen wrap-around glitch (v1.0) Found sometime before or while working on a walkathon TAS. Became useful only later, in the 12:08 "normal mode" improvement, saving ~1 second. By chance, when playing the game.
SNES Earthbound "check area" glitch Aka. "tent glitch", wasn't initially found by me but after I saw it could trigger the game's debug menu, I researched it a bit and managed to trigger the debug menu reliably on the Japanese version. I collaborated with pirohiko to two runs. Saw others do it on Youtube. Then did a TON of testing.
GB Daffy Duck The Marvin Missions out of bounds glitch When visiting a new room, by abusing mechanics related to holding down the "Down" key and shooting, it is possible to wander offscreen and reach glitch tiles that could send you to later points in the game. I don't really remember, but I was working with mmbossman and glitch hunted the game a lot. It was somewhat of a chance occurence.
GB Daffy Duck The Marvin Missions health glitch Walk left and press "right" and "B". For some reason it increases your health by 64 units, giving you "infinite health". It took me more than 5 years to find that it had vastly different, more severe effects on the GB version, as opposed to the SGB version. I think it happened to me while playing casually. Basicly I saw the healthbar glitching out suddenly so I was like "oh, I did this and then that happened".
GB The Smurfs act 1 warp glitch When entering a stump and holding "up", it finishes the level instantly. It works because you have "control" of the first frame. So holding "up" makes you start out 1 pixel higher. This makes you reach the exit trigger, which isn't updated yet. I didn't find. A Youtuber named oudepatattezak pointed it out to me.
DS Kirby Squeak Squad item get glitch When receiving an item, health or treasure at the same time you use an item, you will keep the used item. Happened to me while playing casually, I figured it could be a "two things happen at the same time" thing.
GB Trip World preserving momentum while flying Every 16th frame, the game depletes from your x-speed. By having the game paused on those frames, you can prevent the speed loss. I noticed x-speed behaving differently after pausing different amounts of frames.
GB Trip World wall clipping Before I worked on this game, cyghfer(?) had found a clip in Level 4's miniboss. The Trip World community asked to look into clipping possibilities so the game becomes interesting to speedrun again. I tested around with the Clam miniboss in level 3 and actually ended up finding a clip. When working on the new TAS, I found more clips along the way (Fish clip, Ball clip, Goku clip). Lots of testing. The Ball and Goku clip work because the enemy can eject you to the side and give you a 1 frame speed boost, in some cases enough to clip you into a wall. So carefully watching the x-speed memory address helped a lot.
GB Super Mario Land 2 pipe glitch Most of the significant glitches in this game had already been found by other people. The "garbage area" that you could reach using the pipe glitch caught my attention. The game reads data that isn't meant to be read as level data - each block represents one memory address. I found that altering a certain address inside the "garbage area", $A2D5, can cause the game to finish on level (re-)start and I also found a way through the garbage area to reach said address. Andymac helped a lot, e.g. by providing a map of the "garbage area" and explaining. I remember andymac kept saying there's no use in looking around in the "garbage area", it's not going to do anything. But I noticed all sorts of things could happen by breaking blocks at $A200 onwards, such as screen flashing, giving you low gravity status or making the level start scrolling. So I was persistent and tested a lot, eventually finding $A2D5.
GB Super Mario Land 2 pause glitch I already knew pausing rapidly can cause the map loading to mess up since 2008 or so. In 2011 I noticed the game could reset itself or create blocks/coins flips above Mario's head when pausing during lag. I then found that the bug could do some way interesting things. Spikeman later explained that the bug has a chance of executing RAM addresses at $A201. With help from Masterjun, I made the game read code that makes it jump to a ROM function that finishes the game. I finished a very soon after. Lots and lots and lots of testing and trial-and-error.
GB Tennis serve glitch Tossing the ball up, then having it land on you makes the game award you instead of the opponent. It was already a well known bug.
GB Bubble Ghost respawn glitch Having the bubble burst at the same time it reaches a trigger makes it respawn on the other side of the room. It happens because the game updates the information about which exit/entrance the bubble should appear in as soon as it reaches the trigger, but since it bursts, the bubble stays in the current room. Testing for "2 things happen at the same time" cases.
GBA Mario Pinball Land save & quit The game lets you save and quit, then restart. When done in certain situations (receiving stars or keys etc.), it saves time. I notice a shift of opinion between the early days and now. Using softreset and using non-American versions was rather frowned upon, but now it's "anything goes". If softreset saves 1 second, go for it. If Japanese version saves 1 second on the title screen, go for it. If save & quit saves time, go for it. I was opposed to using such techniques at first, but later I found it makes the run more interesting and I decided to go for absolutely fastest time no matter what.
GB The Adventures of Star Saver stage 9 bug Approaching a stamper can glitch out the game. It requires that you are in human form and haven't shoot a projectile throughout the level. Not useful for speedrunning. By chance.
GBA Dragon Ball Z The Legacy of Goku dialogue bug When text appears and you talk to someone, the game messes up trying to display both texts. Not useful for speedrunning. Testing for "2 things at the same time" bugs.
GBA Dragon Ball Z The Legacy of Goku II memory corruption When using a save point to switch characters, the ki blasts you shoot aren't removed but your attack stun is cleared. Therefore, you can effectively shoot ki blasts every 2nd frame or so. When doing it with Vegeta's Big Bang attack, the resulting explosions mess up the game. Not useful yet. After watching a WIP by Bonecrusher1022 in VBA v23, I started messing around aimlessly for a bit. By chance, I noticed that the ki blasts aren't removed when switching characters. This quickly led up to the find of the bug.
GBA Mario & Luigi Superstar Saga skipping half the game I found a decent amount of bugs in this game. First Mini Mario glitch, then Action Command glitch, then Barrel storage and eventually the huge skip. Others contributed by finding their own share of useful bugs (e.g sign glitch) and making the category work not only on JP but on all versions. I first stumbled upon Mini mario glitch when I was livestreaming, messing around in Bowser's Castle after a fullgame speedrun. But I didn't know what had happened at the time and dismissed it. Later when working on a TAS, I came across it again in Woohoo Hooniversity. By playing around with it, I found the Action Command glitch. Playing around with that, I managed to make it so I could teleport by screen lengths, which led to the huge skip discovery.
There are tons more in my playlist. ----- Basicly, the answer to the question "how do you find glitches?" is: - Play casually and become lucky - Test certain scenarios, especially testing "2 things at the same time" cases: Die and pause Die and talk Talk and reach loading zone Die and reach loading zone Get item and die etc. etc. etc. - Keep an eye on what others have found and put on Youtube(and Nicovideo), then try to expand on it - Be curious and have open eyes. Don't dismiss things and make others aware of your findings.
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Thanks FractalFusion. The (first) IQ test is a feature that existed on that site for a while now and the TPN community is aware of it. Now we are just wondering what this new content or new thing is that is counted down to. You say it is a "second test". Or could it be it's going to be something else? A "second something" that will be added to the site? Thanks again!
Post subject: Your glitch discoveries
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
I planned on making a list of all the bugs and things I found over the years. But before I do, I'm asking you to do the same! Post about the glitches and tricks you found in games and if or how you contributed to speedrunning.
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Can someone see what is the point of the countdown on this page? https://www.shonenjump.com/j/sp_neverland/oni-test/
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Playing the latest interim (Build e92a45599). "No audio" issue 1) Play GB Volley Fire 2) On the title screen, save a state 3) A+B+Start+Select 4) load the state If done correctly, there is no sound. Needs core reboot or actually finishing the softreset to recover the sound. Sometimes the game recovers the audio by itself. This issue can happen in some other games too (Bubble Ghost). In the case of Volley Fire, if you continue on the (muted) title screen, it will fade and softlock on a white screen... This issue happens in GBHawk, but does not happen in Gambatte. Alternate way to do it: 1) Play any GB game 2) Save a state 3) reboot core and hold loadstate hotkey to load a state right after emulation starts If done correctly, there is no sound. Savestate problem It looks like GBHawk and Gambatte share savestates. So states saved in one core can be loaded in the other. Sometimes it works, but other times I get an error and the emu closes.
System.IO.EndOfStreamException: Über das Ende des Datenstroms hinaus kann nicht gelesen werden.
   bei System.IO.BinaryReader.FillBuffer(Int32 numBytes)
   bei System.IO.BinaryReader.ReadInt32()
   bei BizHawk.Common.Serializer.Sync(String name, Int32& val)
   bei BizHawk.Emulation.Common.Components.LR35902.LR35902.SyncState(Serializer ser)
   bei BizHawk.Emulation.Cores.Nintendo.GBHawk.GBHawk.SyncState(Serializer ser)
   bei BizHawk.Client.Common.BinaryStateLoader.GetLump(BinaryStateLump lump, Boolean abort, Action`2 callback)
   bei BizHawk.Client.Common.BinaryStateLoader.GetCoreState(Action`1 callbackBinary, Action`1 callbackText)
   bei BizHawk.Client.Common.SavestateManager.LoadStateFile(String path, String name)
   bei BizHawk.Client.EmuHawk.MainForm.LoadState(String path, String userFriendlyStateName, Boolean fromLua, Boolean supressOSD)
   bei BizHawk.Client.EmuHawk.MainForm.LoadQuickSave(String quickSlotName, Boolean fromLua, Boolean supressOSD)
   bei BizHawk.Client.EmuHawk.MainForm.CheckHotkey(String trigger)
   bei BizHawk.Client.EmuHawk.MainForm.<ProcessInput>b__94_0(Boolean current, String trigger)
   bei System.Linq.Enumerable.Aggregate[TSource,TAccumulate](IEnumerable`1 source, TAccumulate seed, Func`3 func)
   bei BizHawk.Client.EmuHawk.MainForm.ProcessInput()
   bei BizHawk.Client.EmuHawk.MainForm.ProgramRunLoop()
   bei BizHawk.Client.EmuHawk.Program.SubMain(String[] args)
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Looking at the third and last bug. That is the Star man crash. I tried to redo this bug in multiple sessions, but randomly playing and causing a lot of lag while starman invincibility runs out didn't do anything. But today, I suspected the bug might happen due to audio handling, so I froze
  • $DFE0 (new sfx) to 0x02 (= bullet sound) and
  • $DFE8 (new bgm) to 0x11 (= credits theme).
What this does is that it starts playing audio anew every frame. When I played with the addresses frozen like this, I managed to freeze the game a few times. The freeze always happened when the invincibility ran out and the game attempted to play the main level theme (but failed). It doesn't seem to be related to lag frames, but the rarity of the bug and timing/precision seems more or less similar to the map bug. ...Although the technicalities might be way different, idk... I try to do it without freezing the addresses now.
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Mon francais n'est pas bien, je utilise l'anglais. To record AVI with lua drawn text: Bizhawk: File --> AVI/WAV --> Capture OSD ✓ File --> AVI/WAV --> Config and Record AVI (Example videos: https://www.youtube.com/watch?v=iRoXdecB684 https://www.youtube.com/watch?v=2TQXPbAsqTg ) Visual Boy Advance-v24m: Options --> Headup-Display --> Text Display Options --> Display: In game Tools --> Start AVI recording (Example video https://www.youtube.com/watch?v=piRAvDDjjYE ) Other emulator: I don't know If I misunderstood the question, please disregard this post.
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Thanks ais523! I started working on a visualisation of frames. Maybe something like this will be helpful.
Language: Lua

console.clear() memory.usememorydomain("System Bus") client.SetGameExtraPadding(0,0,134,0) local MouseX = 0 local MouseY = 0 local clickedFrames = 0 local clicked = false local prevframe = emu.framecount() function arrowDown(xpos,ypos,col) gui.drawLine(xpos,ypos,xpos+6,ypos,col) gui.drawLine(xpos+1,ypos+1,xpos+5,ypos+1,col) gui.drawLine(xpos+2,ypos+2,xpos+4,ypos+2,col) gui.drawPixel(xpos+3,ypos+3,col) end function arrowUp(xpos,ypos,col) gui.drawLine(xpos,ypos,xpos+6,ypos,col) gui.drawLine(xpos+1,ypos-1,xpos+5,ypos-1,col) gui.drawLine(xpos+2,ypos-2,xpos+4,ypos-2,col) gui.drawPixel(xpos+3,ypos-3,col) end local addressList={ --address color note [1]={0x0040,0xFFA0A0A0,"VBLANK START"}, [2]={0x2258,0xFFFFE000,"READ FFEA"}, [3]={0x225D,0xFFFFE000,"READ FFE9"}, [4]={0x2267,0xFFFF7000,"UPDATE FFE9(+1)"}, [5]={0x2198,0xFFFFE000,"READ FFEA"}, [6]={0x218A,0xFFFF7000,"UPDATE FFEA(03)"}, [7]={0x2195,0xFFFF7000,"UPDATE FFEA(00)"}, [8]={0x22A6,0xFFFF7000,"UPDATE FFEA(02)"}, [9]={0x0067,0xFFA0A0A0,"0067"}, [10]={0x06E7,0xFF00E0FF,"FFFE5->HL"}, [11]={0x0723,0xFF0070FF,"UPDATE FFFE5"}, [12]={0x21D8,0xFF00E0FF,"READ FFE5"} } local addressListFrame={} local address=0 local col=0 local index=1 local ListOffset=1 local Mouse={} function text(x, y, text, color, backcolor) gui.drawText(x, y, text,color,backcolor,10,"Arial") end local addAddress=function(n) addressListFrame[index]=n index=index+1 end for n=1,table.getn(addressList) do address=addressList[n][1] color=addressList[n][2] label=addressList[n][3] event.onmemoryexecute(function() addAddress(n) end,address) end event.onframestart(function() addressListFrame={} ListOffset=1 end) event.onloadstate(function() addressListFrame={} ListOffset=1 end) while true do thisframe=emu.framecount() MouseX = input.getmouse().X MouseY = input.getmouse().Y clicked = input.getmouse().Left if clicked then clickedFrames = clickedFrames + 1 else clickedFrames = 0 end text(164,2,"FRAME " .. emu.framecount(),0xFFA060A0) n=1 for s=ListOffset,table.getn(addressListFrame) do z=addressListFrame[s] text(164,4+n*10,string.upper(string.format("%04x",addressList[z][1])),0xFFFFFFFF) text(190,4+n*10,addressList[z][3],addressList[z][2]) n=n+1 end if MouseX>280 and MouseX<290>130 and MouseY<138 then if clicked and clickedFrames%2==1 then if ListOffset<table>280 and MouseX<290>120 and MouseY<127>1 then ListOffset=ListOffset-1 end end arrowUp(282,123,0xFFFFFFFF) else arrowUp(282,123,0xA0FFFFFF) end text(281,104,ListOffset-1,0xFFE0E0E0) index=1 if client.ispaused() then gui.DrawFinish() emu.yield() else emu.frameadvance() end prevframe=thisframe clicked=false end
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
I can't thank ais523 enough for his research! Today I finally managed to create a movie file without using the luascript. http://dehacked.2y.net/microstorage.php/info/1074552241/sml1%20bug.bk2 It syncs on both v1.0 and v1.1. ---------- I would like to investigate "respawning at checkpoints" now. You know why. The game seems to rely on $FFE5 (which is some sort of x-pos address) to determine where Mario should respawn. So I made another trace log, right before the screen fades white to respawn Mario. This is the frame where $FFE5 is checked. It actually seems $FFE5 is supposed to be read as 2-byte(?). Values of $FFE5~$FFE6 Frame1: 12 06 (Mario died and screen is about to turn white) Frame2: 0F 01 Frame3: 0F 0D (Screen white) Frame4: 10 04 Frame5: 10 07 Frame6: 10 07 Frame7: 10 08 (Visible) https://paste.ee/p/jlRIC (this is when transitioning from frame 1 to 2) I looked at line 3952, where it does something with FFE5. What I can understand:
save address "FFE5" to HL
(...)
load value from HL (FFE5: 0x12) to A
if A > 0 then decrement A by 1 (So A turns 0x11)
(...)
Do some operations(Not sure what's happening) and save the result to B (= 0x0F)
load contents of B to address in HL (FFE5 is now 0x0F)
Write 0x00 to FFE6
(...)
Later on, it saves value of FFE5 to A (= 0x0F)
Adds A to A (= 0x1E) and saves the value to E
(...?)
I would be happy to understand better what the game is doing. What operations is it doing to come up with the value in B (0x0F)? What is it doing with the value in E at the end?
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
I noticed emu.setregister() and emu.totalexecutedcycles() aren't supported in Gambatte, so I was wondering if there will be support for these in GBHawk?
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Alyosha wrote:
This effect is not emulated by any emulator yet.
Which effect? Is it visual? In Arkanias566's video, no sprites pass through the top status bar at the time the glitch is occuring. (The glitch happens when you can see the crack in the pattern right underneath the status bar.) (EDIT: Arkanias also encountered the bug when he played on BGB 1.5.1. And BGB and Gambatte are close in accuracy. In other words, if it works on BGB, why shouldn't it on Gambatte without the lua hack.) Question: What determines when $0040 should be executed? ___ By now, I think the bug might be dependent on the enemies you killed throughout the level. Some information pertaining the killed enemies is not cleared in the RAM and I noticed the bug happens more often in certain scenarios, and doesn't in others.
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Lua functions wrote:
void gui.drawText(int x, int y, string message, [color? forecolor = null], [color? backcolor = null], [int? fontsize = null], [string fontfamily = null], [string fontstyle = null], [string horizalign = null], [string vertalign = null])
Language: Lua

while true do gui.drawText(50,60,"hillo",0xFF0000) emu.frameadvance() end
Isn't it supposed to be red text?
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
Investigating the map bug further... $FFEA is 0 normally and becomes 1 every few pixels you move to the right. The contents of $FFEA are added to $FFE9. When $FFEA is 1, $FFE9 is updated. $FFE9 controls which column of the map is loaded next. I used Bizhawk tracelog to compare two scenarios. I'm not very good at assembly, but I highlighted everything that has to do with the two addresses.
normal frame ($FFE9 is updated)---bug frame ($FFE9 not updated)
0AFF:--20--F7--JR--NZ,0AF8h--A:ff--Cy:1861108572 0AF8:--7E--LD--A,(HL)--A:ff--Cy:1861108584 0AF9:--FE--FF--CP--#FFh--A:ff--Cy:1861108592 0AFB:--20--05--JR--NZ,0B02h--A:ff--Cy:1861108600 (...) 06B4:--7E--LD--A,(HL)--A:01--Cy:1861110032 06B5:--A7--AND--A--A:00--Cy:1861110040 06B6:--C8--RET--Z--A:00--Cy:1861110044 0296:--76--HALT--A:00--Cy:1861110064 0040:--C3--60--00--JP--#0060h--A:00--Cy:1861117772 0060:--F5--PUSH--AF--A:00--Cy:1861117788 0061:--C5--PUSH--BC--A:00--Cy:1861117804 0062:--D5--PUSH--DE--A:00--Cy:1861117820 0063:--E5--PUSH--HL--A:00--Cy:1861117836 0064:--CD--58--22--CALL--#2258h--A:00--Cy:1861117852 2258:--F0--EA--LDH--A,(#FFEAh)--A:00--Cy:1861117876 225A:--FE--01--CP--#01h--A:01--Cy:1861117888 225C:--C0--RET--NZ--A:01--Cy:1861117896 225D:--F0--E9--LDH--A,(#FFE9h)--A:01--Cy:1861117904 225F:--6F--LD--L,A--A:5a--Cy:1861117916 2260:--3C--INC--A--A:5a--Cy:1861117920 2261:--FE--60--CP--#60h--A:5b--Cy:1861117924 2263:--20--02--JR--NZ,2267h--A:5b--Cy:1861117932 2267:--E0--E9--LDH--(#FFE9h),A--A:5b--Cy:1861117944 2269:--26--98--LD--H,#98h--A:5b--Cy:1861117956 226B:--11--B0--C0--LD--DE,#C0B0h--A:5b--Cy:1861117964 226E:--06--10--LD--B,#10h--A:5b--Cy:1861117976 2270:--E5--PUSH--HL--A:5b--Cy:1861117984 (...) 22A0:--D1--POP--DE--A:2c--Cy:1861121476 22A1:--05--DEC--B--A:2c--Cy:1861121488 22A2:--20--CC--JR--NZ,2270h--A:2c--Cy:1861121492 22A4:--3E--02--LD--A,#02h--A:2c--Cy:1861121500 22A6:--E0--EA--LDH--(#FFEAh),A--A:02--Cy:1861121508 22A8:--C9--RET--A:02--Cy:1861121520 0067:--CD--86--1B--CALL--#1B86h--A:02--Cy:1861121536 1B86:--AF--XOR--A--A:02--Cy:1861121560 1B87:--EA--E2--C0--LD--(#C0E2h),A--A:00--Cy:1861121564 (...) 0030:--56--LD--D,(HL)--A:00--Cy:1861123776 0031:--D5--PUSH--DE--A:00--Cy:1861123784 0032:--E1--POP--HL--A:00--Cy:1861123800 0033:--E9--JP--(HL)--A:00--Cy:1861123812 0627:--CD--98--21--CALL--#2198h--A:00--Cy:1861123816 2198:--F0--EA--LDH--A,(#FFEAh)--A:00--Cy:1861123840 219A:--A7--AND--A--A:02--Cy:1861123852 219B:--20--EB--JR--NZ,2188h--A:02--Cy:1861123856 2188:--3E--03--LD--A,#03h--A:02--Cy:1861123868 218A:--E0--EA--LDH--(#FFEAh),A--A:03--Cy:1861123876 218C:--F0--A4--LDH--A,(#FFA4h)--A:03--Cy:1861123888 218E:--47--LD--B,A--A:f9--Cy:1861123900 218F:--FA--AA--C0--LD--A,(#C0AAh)--A:f9--Cy:1861123904 2192:--B8--CP--B--A:f8--Cy:1861123920 2193:--C8--RET--Z--A:f8--Cy:1861123924 2194:--AF--XOR--A--A:f8--Cy:1861123932 2195:--E0--EA--LDH--(#FFEAh),A--A:00--Cy:1861123936 2197:--C9--RET--A:00--Cy:1861123948 062A:--CD--4E--08--CALL--#084Eh--A:00--Cy:1861123964 084E:--F0--9C--LDH--A,(#FF9Ch)--A:00--Cy:1861123988 0850:--A7--AND--A--A:00--Cy:1861124000 (...) 06B4:--7E--LD--A,(HL)--A:02--Cy:1861174368 06B5:--A7--AND--A--A:00--Cy:1861174376 06B6:--C8--RET--Z--A:00--Cy:1861174380 0296:--76--HALT--A:00--Cy:1861174400 6C51:--FE--03--CP--#03h--A:01--Cy:1860406336 6C53:--20--10--JR--NZ,6C65h--A:01--Cy:1860406344 6C65:--E5--PUSH--HL--A:01--Cy:1860406356 6C66:--7D--LD--A,L--A:01--Cy:1860406372 (...) 0030:--56--LD--D,(HL)--A:00--Cy:1860409752 0031:--D5--PUSH--DE--A:00--Cy:1860409760 0032:--E1--POP--HL--A:00--Cy:1860409776 0033:--E9--JP--(HL)--A:00--Cy:1860409788 0627:--CD--98--21--CALL--#2198h--A:00--Cy:1860409792 2198:--F0--EA--LDH--A,(#FFEAh)--A:00--Cy:1860409816 219A:--A7--AND--A--A:01--Cy:1860409828 219B:--20--EB--JR--NZ,2188h--A:01--Cy:1860409832 2188:--3E--03--LD--A,#03h--A:01--Cy:1860409844 218A:--E0--EA--LDH--(#FFEAh),A--A:03--Cy:1860409852 218C:--F0--A4--LDH--A,(#FFA4h)--A:03--Cy:1860409864 218E:--47--LD--B,A--A:f9--Cy:1860409876 218F:--FA--AA--C0--LD--A,(#C0AAh)--A:f9--Cy:1860409880 2192:--B8--CP--B--A:f8--Cy:1860409896 2193:--C8--RET--Z--A:f8--Cy:1860409900 2194:--AF--XOR--A--A:f8--Cy:1860409908 2195:--E0--EA--LDH--(#FFEAh),A--A:00--Cy:1860409912 2197:--C9--RET--A:00--Cy:1860409924 062A:--CD--4E--08--CALL--#084Eh--A:00--Cy:1860409940 084E:--F0--9C--LDH--A,(#FF9Ch)--A:00--Cy:1860409964 0850:--A7--AND--A--A:00--Cy:1860409976 (...) 2D02:--1A--LD--A,(DE)--A:20--Cy:1860415488 2D03:--22--LD--(HL+),A--A:27--Cy:1860415496 2D04:--13--INC--DE--A:27--Cy:1860415504 0040:--C3--60--00--JP--#0060h--A:27--Cy:1860415532 0060:--F5--PUSH--AF--A:27--Cy:1860415548 0061:--C5--PUSH--BC--A:27--Cy:1860415564 0062:--D5--PUSH--DE--A:27--Cy:1860415580 0063:--E5--PUSH--HL--A:27--Cy:1860415596 0064:--CD--58--22--CALL--#2258h--A:27--Cy:1860415612 2258:--F0--EA--LDH--A,(#FFEAh)--A:27--Cy:1860415636 225A:--FE--01--CP--#01h--A:00--Cy:1860415648 225C:--C0--RET--NZ--A:00--Cy:1860415656 0067:--CD--86--1B--CALL--#1B86h--A:00--Cy:1860415676 1B86:--AF--XOR--A--A:00--Cy:1860415700 1B87:--EA--E2--C0--LD--(#C0E2h),A--A:00--Cy:1860415704 (...) 0030:--56--LD--D,(HL)--A:00--Cy:1860475292 0031:--D5--PUSH--DE--A:00--Cy:1860475300 0032:--E1--POP--HL--A:00--Cy:1860475316 0033:--E9--JP--(HL)--A:00--Cy:1860475328 0627:--CD--98--21--CALL--#2198h--A:00--Cy:1860475332 2198:--F0--EA--LDH--A,(#FFEAh)--A:00--Cy:1860475356 219A:--A7--AND--A--A:00--Cy:1860475368 219B:--20--EB--JR--NZ,2188h--A:00--Cy:1860475372 219D:--F0--A4--LDH--A,(#FFA4h)--A:00--Cy:1860475380 219F:--E6--08--AND--#08h--A:fa--Cy:1860475392 21A1:--21--A3--FF--LD--HL,#FFA3h--A:08--Cy:1860475400 21A4:--BE--CP--(HL)--A:08--Cy:1860475412 21A5:--C0--RET--NZ--A:08--Cy:1860475420 062A:--CD--4E--08--CALL--#084Eh--A:08--Cy:1860475440 084E:--F0--9C--LDH--A,(#FF9Ch)--A:08--Cy:1860475464 0850:--A7--AND--A--A:00--Cy:1860475476 (...) 089E:--E0--A2--LDH--(#FFA2h),A--A:4e--Cy:1860476528 08A0:--3E--02--LD--A,#02h--A:4e--Cy:1860476540 08A2:--80--ADD--A,B--A:02--Cy:1860476548 08A3:--E0--8F--LDH--(#FF8Fh),A--A:53--Cy:1860476552
Some things I can notice:
  • $2198 is executed twice in the bug scenario, only once in the normal scenario.
  • Execution of $2258~onwards is cut short in the bug scenario, skipping $225D and $2267.
Any explanations are welcome. -- <mugg> bug frame: https://paste.ofcode.org/WR5WcaaZEMEHAMMPPKjsXB <mugg> normal frame: https://paste.ofcode.org/adQuG4xEupGa4kAdVbyFMj In contrast to the two pastes above, these two start at the same ROM location: different bug scenario https://paste.ofcode.org/yNXGHYdfWMbTKjHrbP6WVL different normal scenario https://paste.ofcode.org/i6jJT9BA5fTiFbSKgVK2VM (They are the same for the first 370 lines.) Note: These pastes expire in one week from now.
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany
So after some time has passed, this is what I feel: Half my class are shit people. The other half is ok. There is yet again a girl I have fallen in love with but haven't confessed due to a great number of reasons... And I have a good friend. Class itself is sometimes interesting, sometimes boring/gives me a headache. It's ok. Listening to music in the morning helps me a lot. The past continued to hurt me quite a bit. There is so much more to tell but it's better left untold. Since about 2 weeks ago, I felt nothing anymore. I don't feel pain as much anymore when thinking about the past. It's a time I was fucked with, was misunderstood, I tried to live dreams and couldn't because of others not giving me a chance. When I think about the past, I usually shake my head in denial, as in, I won't forgive all those people that fucked with me and made my life so much harder. I think the past has made me a bitter person. Because I often find myself in situations in class where everyone is cheering or laughing, or they prepare for Christmas and I don't want to have any part of it. But I can't be blamed if they take 3 hours and counting for planning a half hour Christmas theatre play. While I was motivated to learn something, I had to sit through those hours instead. I can't get into a mood where I look forward to Christmas and be all like "yes, let's have a nice time everyone is so happy" because I sure as hell am not happy.
Editor, Experienced Forum User, Published Author, Expert player (2315)
Joined: 5/15/2007
Posts: 3856
Location: Germany