BizHawk Emulator Development


Experienced Forum User
Joined: 8/3/2009
Posts: 149
What does the math part mean? That the search results I'll get won't have the 'real' addresses and that I have to use math to 'turn' them into the correct ones? As long as the math is adding or subtracting, then I guess it could be okay. But then again, I'll probably spend more time 'converting' addresses than searching each memory domain.
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
the math is adding or subtracting. you dont have to do math to just add a freeze youd only have to do math to convert it to an actual cheat code or use it in another emulator
Banned User
Joined: 1/26/2014
Posts: 49
Location: United States
zeromus wrote:
When I hear "glitch" and see a game going off the rails (the illegal instructions), I immediately think the game is _supposed_ to be hanging, and only mednafen is getting it right. Does this glitch happen on hardware? Until I have proof that it does, I'm going to have to count mednafen as doing it correctly. Just because PSXfin and pSX can forge through the brokenness doesn't mean theyre right to do that. Also, tell me more about that glitch.
So, maybe you have answered this before, but I can't find the any posts about it... Is Mednafen more accurate then Xebra? I have been doing research and some people say Xebra and others say Mednafen... I would really like to know your opinion. http://emulation-general.wikia.com/wiki/XEBRA http://emulation-general.wikia.com/wiki/PlayStation_Emulators This source is saying "XEBRA is an emulator that is reverse engineered from PS1 hardware by a Japanese programmer (Dr.Hell) resulting in the absolute most accurate PS1 emulator to date, similar to what is Higan (BSNES) for Snes." http://emulation.gametechwiki.com/index.php/PS1_Tests and this one is saying Mednafen is more accurate...
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
That nonsense is mostly empty words, trivia, and exaggeration. It was just added to the xebra wiki on october 15 2015, nobody else has got around to debating it yet. Virtually nothing is bsnes level except for bsnes. The xebra results are from feb of this year seemingly. If you can figure out when the latest xebra is from other than the silly 2015 printed on the bios screen, then you're a better detective than I am. I expect the reality is it's comparable in general to mednafen, with each nailing a few things the other doesnt. Accuracy isnt a one dimensional value. But why fill your brain with the small details? It doesn't matter to any of us whether xebra is more accurate, it's useless closed source. If you want to play games, just try them both and see which one gives you more joy.
Banned User
Joined: 1/26/2014
Posts: 49
Location: United States
Thank you for your insight... I as well was thinking pretty much the same thing, and was wary of the wiki's bold statement lol I figured out how to do the SOTN credits call (game end glitch) on Xebra finally... but this modified method is still failing on Bizhawk/Mednafen, but getting the glitch to work on Xebra has given me new idea's why it is failing on Bizhawk/Mednafen. I don't have a Playstation 1... So I figure that once I find methods for the credits call to work on both Xebra and Bizhawk/Mednafen, I can find a retro game store and test both methods and see if one works... or someone that has a Playstation 1 and is interested can test the methods. So I continue my research and testing...
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
Also, you have a ton of SOTN speedrunners who can test the glitch for you on their consoles.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
Editor, Experienced Forum User, Published Author (2799)
Joined: 5/15/2007
Posts: 3821
Location: Germany
Gameboy TASer of 2015NES TAS of 2013Gameboy TASer of 2011Gameboy TASer of 2010
I can't open Mario and Luigi Superstar Saga (U) in VBA-Next anymore, because it crashes Bizhawk the moment I try to run it. It persists even through closing and reopening Bizhawk. What do? I used this rom in 1.11.3 for weeks but now I can't open it anymore. After the problem started happening, I tried to open the ROM in 1.11.2 and it occured there too. EDIT: It turned out the ROM got corrupted (I don't know how). I replaced it with a new working one and the problem is solved now.
Editor, Experienced Forum User, Published Author (2799)
Joined: 5/15/2007
Posts: 3821
Location: Germany
Gameboy TASer of 2015NES TAS of 2013Gameboy TASer of 2011Gameboy TASer of 2010
I don't know about this stuff, but input.get() doesn't track if the user scrolls on their mouse wheel. Is this as expected?
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
Language: lua

fullstring = " !\"#$%&'()*+,_./0123456789:;<=>?@\nABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`\nabcdefghijklmnopqrstuvwxyz{|}" while true do gui.pixelText(0,20,fullstring,"white",0x440000ff,"fceux") gui.pixelText(0,60,fullstring,"red","black","gens") gui.drawText(0,90,fullstring,"yellow",0x8800ff00) gui.text(0,320,fullstring,"purple") emu.frameadvance() end
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
Pokota
He/Him
Experienced Forum User
Joined: 2/5/2014
Posts: 776
Oooo, gui.pixelText is going to be something I'll enjoy a lot.
Adventures in Lua When did I get a vest?
Editor, Experienced Forum User, Published Author (2799)
Joined: 5/15/2007
Posts: 3821
Location: Germany
Gameboy TASer of 2015NES TAS of 2013Gameboy TASer of 2011Gameboy TASer of 2010
Is that new? Because I could have used it earlier...
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
That's some good useful work right there. In the long run we'll have a system to import TTFs and user bitmap fonts and such, but this is a useful stopgap
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
TTFs can be "imported" on user end just by installing the needed font on the system. It basically would work the same as if we'd let them import those to bizhawk only, since both ways allow calling them by family name from lua, but global install sounds smarter to me. So I limited this to 2 main fonts everyone is used to, but there's still a ton of good pixelated fonts already: http://fontstruct.com/gallery/category/1/pixel_optimized BTW, creating a bitmap font using http://www.angelcode.com/products/bmfont/ can be done with any font that's locally installed, so there's really no limit for bitmap ones either. They even have a benefit of being able to support halo and stuff. But they are really slow, 20 lines of text and my emulator slows down below 100% speed. But since you can't import them to a compiled executable, here's where that option would really help.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
the TTF rendering is going bye-bye once the lua rendering becomes HW accelerated, unless someone can find a way to render TTF in c# without requiring an ungodly amount of bulk. I suppose we could make it easy to import a TTF to a bitmap font, but that almost always takes some careful finagling to get good results.
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
Bitmap fonts aren't scalable, and that's the reason I even added pixelated ttfs. Well, this is how I worked around the branch screenshot problem actually: with hud on, they are downscaled from the emulator window resolution, killing the bitmap text. Existing ttfs were too shitty (only look okay at 12+ size), so I added pixelated ones. As for HW acceleration, something makes me sure there's a way to import custom fonts on that level as well, and I hope it's not limited to bitmap fonts.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
I dont understand any of this. You thumbnail a picture, the text gets illegible, no matter how it's rendered. You thumbnail a picture and draw text on it, the text looks as good as it does any other time.
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
If we put bitmap text over a 1x image, it starts taking too much space. And it can't linebreak by a string char or screen border.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
OK, so you added fonts that when shrunk look OK? That's cool, but it's not mad science. What's this about linebreaking and whatever? If a function using a bitmap font can't linebreak or wrap at the edge of a screen, then its a lousy function.
Experienced Forum User, Published Author, Senior Judge, Senior Publisher (1423)
Joined: 4/17/2010
Posts: 10321
Location: RU
NES TAS of 2011
It's what bizhawk has right now. I couldn't figure out a way to make RenderString() do line breaks, even though BMFont has some idea of them.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting. If TASing is meta-play, TASVideos Movie Rules are meta-meta-play!
Editor, Experienced Forum User, Published Author (2799)
Joined: 5/15/2007
Posts: 3821
Location: Germany
Gameboy TASer of 2015NES TAS of 2013Gameboy TASer of 2011Gameboy TASer of 2010
In lua, when a form is opened like this
var = forms.newform(240,260,"Edit Action Commands")
then var becomes a number. You can suspend opening multiples of the same form by checking if var is not nil. And you can set var to nil at the same time you would destroy the form when clicking on a close button, so that you can create the form window again (since var is nil again). The problem is, that you can't seem to run your own custom function when clicking on the X in the top right, in order to close the form window. Doing so will not set var to nil. So you cannot create the form window anymore if you suspend creating them if var is nil. Phew, I hope what I wrote is understandable. Basicly, I want to create only 1 of a same form window at a time, that's why there's all this trouble about checking if var is nil or not. Maybe another way to look at this is, that the actual problem is that forms.destroy does not set var to nil. Maybe it should. Also, it doesn't seem like running:
var = nil
inside the onexit codeblock works. ------ Tools > Toolbox opening the toolbox when the Bizhawk client is on the right side of the screen makes it so that the toolbox window is offscreen and invisible to the user. ------ Opening a lua script that uses an image, then closing the script (the lua console is closed) will make it so that the image is still in use by Bizhawk, when it is really not.
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
only you can set a variable to nil. you need to do it when the form is closed. if you dont have an event when the form closes, then you can't do what you want. what you need is an event when the form closes
Editor, Experienced Forum User, Published Author (2799)
Joined: 5/15/2007
Posts: 3821
Location: Germany
Gameboy TASer of 2015NES TAS of 2013Gameboy TASer of 2011Gameboy TASer of 2010
I can only run a function on buttons I add myself. I can't apply functions to the X or minimize buttons that I haven't added myself (can I?).
Editor, Emulator Coder, Experienced Forum User
Joined: 8/7/2008
Posts: 1156
you can do anything we make a hook for you to do. you cant do anything we havent made a hook for you to do
Editor, Experienced Forum User, Published Author (2799)
Joined: 5/15/2007
Posts: 3821
Location: Germany
Gameboy TASer of 2015NES TAS of 2013Gameboy TASer of 2011Gameboy TASer of 2010
Well, there doesn't seem to be a hook for the X or minimize buttons. When clicking X, var doesn't become nil but the form window is gone. How am I supposed to detect that the window has gone if all I have is the var variable?