Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Now that I'm a fair way through development, I thought I might announce that a new Atari 7800 core is available in BizHawk. A7800Hawk aims to be a cycle accuracte 7800 core to replace EMU7800, which has bugs that are not easy to fix. Right now the core is only available for play testing and is not ready for TASing (although savestates do already work.) The core itself is built conveniently from available parts such as the A2600 TIA and the 6502 core used in other system cores as well. All mappers are supported. Known Bugs List: A2600 mode not supported Color Artifacting not supported (Tower Toppler) one on one basketball: Runs too fast? (need to time console.) Published EMU7800 runs resynced to BizHawk: Ninja Golf: http://tasvideos.org/userfiles/info/41337253856983444 Scrapyard Dog (does not sync): http://tasvideos.org/userfiles/info/41337966763585237 Choplifter (does not sync): http://tasvideos.org/userfiles/info/41403013459751971
Joined: 7/17/2012
Posts: 545
Location: Switzerland
Wow, once more, thanks for your amazing work Alyosha! Will make some tests in the few next days! Are the two cores available or A7800 will replace definitely EMU7800? Only test Donkey Kong for now, but as comparison, is the sound right in A7800Hawk? Link to video Xbox source
My Citra 3DS rerecording movie files test repositery: https://cutt.ly/vdM0jzl Youtube playlist "Citra Tests": https://cutt.ly/AdM0wg9 http://www.youtube.com/user/phoenix1291
MESHUGGAH
Other
Skilled player (1920)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
A7800Hawk: Maria timing Fix 0.0.0.1581, all tests done in TAStudio (just saying because one of the game started after a few hundred frames when I closed it) Galaga: seems to be OK, however the lag frame marking is probably isn't proper (181th frame starting the game, it's green if you don't press a button there) http://imgur.com/a/yUdr6 Title Match Pro Wrestling NTSC: would be OK but wrong palette and only lagframes PAL: instant crash after 1st frame Tomcat NTSC: would be OK slightly wrong palette (title is red) but only lagframes, PAL: instant crash Super Skateboardin NTSC: slightly wrong palette (title is red) instant crash after bios, PAL: instant crash and no bios Xevious NTSC: top half is rendered incorrecty, PAL: instant crash edit: PAL fix 0.0.0.1585 First of all: no pause glitch -> I'm still believe it was a bad implementation in EMU7800 and this one is the correctly working one (based on my experiences in other A7800 games). Currently only Galaga PAL has some pause issues (which already had severe issue in EMU7800) from the tested titles. Robotron 2084 has also a distinct (than other A7800 titles) pause system, where pause only happens if you don't press other buttons. Super Skateboarding: requires to press reset to start the game (IIRC you can press any button to start the game normally) Xevious NTSC: seems to be OK Xevious PAL: shows something glitchy (which then drawn persistently behind the game??) after pressing start. The lag frame pattern is also incorrectly drawn but something similar. The PAL version has a faster gameplay because of different lag pattern. (1 means frame, 0 means lag frame) 1010101010101010101010 NTSC 1101011010110101101010 PAL
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Thanks for the testing. I just made some commits that fix (some) PAL, fix lag detection, and fix Xeviious, I'll have to look into the palettes though. EDIT: Ok I commited a proper fix for PAL, those games should work now.
phoenix1291 wrote:
Are the two cores available or A7800 will replace definitely EMU7800? Only test Donkey Kong for now, but as comparison, is the sound right in A7800Hawk?
For now both cores are available (in Config->Cores->Atari 7800) I expect A7800Hawk to supercede EMU7800 especially for TASing once it reaches feature parity, as EMU7800 is not a very accurate emulator and is quite outdated. At that point it can probably be removed but that's not really up to me. As for the sound, that is a work in progress I'll look into a bit more later.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
I've updated the NTSC color palette to a much better one, so the palette issues should be resolved. I also started implementing the super game mappers, so most games marked A78SG in the DB should be playable now.
MESHUGGAH
Other
Skilled player (1920)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
0.0.0.1594 Xenophobe - my old notes for EMU7800: "PAL has different frame rate for player walking and bullets for example" - there is a minimal (and probably correct) pause glitch, depending on how you pause the game for both NTSC and PAL. There are some graphical oddities too. Touchdown Football: stops when starting the game, there would be all the players and the ref on the field once started Tomcat NTSC better palette Title Match Pro Wrestling NTSC palette didn't changed? Super Skateboardin NTSC better palette
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
MESHUGGAH wrote:
Title Match Pro Wrestling NTSC palette didn't changed?
It looks correct to me, can you post a screen shot of what you are seeing? I just implemented the remaining video modes. They seem to be rarely used, but games like Beef Drop now display correctly as well as the title screen in scrapyard dog.
MESHUGGAH
Other
Skilled player (1920)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
edit: from http://gamester81.com/wrestle-reviews-title-match-pro-wrestling/ -> http://imgur.com/a/FGEZv For the colors I google for 2600 7800 game name, because this way I can avoid ROM sites' vids/screens. I will PM my 7800 links tonight. Obviously I can't verify the palette, only the oddities (lag frame, pause issues, generic visual artifacts)
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
MESHUGGAH
Other
Skilled player (1920)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
Pause system from source codes (will update later and insert tests to see if they are valid) Galaga PAUSTOG: Only look pause once in 10 frames in GMAIN.s WORDS17 Both (ntsc,pal) version looks for pause once in 16 frames. OK! PAUSFIR1: Register fire button while paused, OK! Robotron The source code isn't complete, the pause system and vblank related stuff missing RKL kernel RSUBR subroutines RMAIN game loop Xevious GETJOY.s and MAIN.s Autoplay avoid pause hit: OK! The pause system is a bit elaborate, and it works as described OK!
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
I've made several more commits that brings almost all games to a playable state. Only games that require Pokey sound chip remain. I've also implmeneted controller selection, fixing an annoyance of EMU7800. I still need to add the lightgun though and controller detection in a couple of games isn't working yet, but it's making progress. Numerous bug fixes have of course also occured. now that the core is reaching a maturity that meets or exceeds EMU7800, I'll be keeping track of a known bugs list in the opening post. Hopefully I can work them out in the next couple of weeks. Let me know what needs to be added to the list.
Joined: 7/17/2012
Posts: 545
Location: Switzerland
Tower Toppler (1988) (Atari) [!].a78 (Good7800 v2.04) MD5: 252515A9FEA1976A99167A40DF1E77A3 SHA-1: E4B5A0DD8BFC9319289076EF0AA4543D94019E5C Link to video
My Citra 3DS rerecording movie files test repositery: https://cutt.ly/vdM0jzl Youtube playlist "Citra Tests": https://cutt.ly/AdM0wg9 http://www.youtube.com/user/phoenix1291
MESHUGGAH
Other
Skilled player (1920)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
phoenix1291 wrote:
Tower Toppler (1988) (Atari) [!].a78
What is your difficulty switch setting? In emu7800 this happens too because of settings. edit: because this is a "built-in" cheat code http://www.consoledatabase.com/cheats/atari7800/towertoppler/ edit2: 2016 november difficulty switch added to emu7800 https://github.com/TASVideos/BizHawk/issues/726, mentioning other issues. Other games with similar difficulty switch things: - pac man hard mode: left difficulty switch a - right position - Ikari Warriors, Super Skateboardin' and Scrapyard Dog (turn on/off background music) - Jr. Pac-Man (homebrew - starting lives and Fast Mode) - Failsafe (homebrew - starting lives and time to guess Failsafe Code) - Xevious (1 or 2-button function to fire) - Sirius (prototype - difficulty Easy or Hard) - Plutos (prototype - 1 or 2 players) - Motor Psycho (show score / response control parameters)
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Joined: 7/17/2012
Posts: 545
Location: Switzerland
MESHUGGAH wrote:
What is your difficulty switch setting?
I've nothing changed, so the standard settings. Thanks for the tips, will try to change the difficulty settings to see if it works!
My Citra 3DS rerecording movie files test repositery: https://cutt.ly/vdM0jzl Youtube playlist "Citra Tests": https://cutt.ly/AdM0wg9 http://www.youtube.com/user/phoenix1291
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
A note about difficulty switches: Currently I have them as basically toggles. Press the button and it changes it's state. At the moment however I have no good way to show the user what state the switch is in. If anyone has any ideas on how I can make this more clear, feel free to suggest it. I thought about using 2 buttons instead, one for each setting of the difficulty switch, but doubling the amount of controls doesn't seem like an efficient solution.
MESHUGGAH
Other
Skilled player (1920)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
According to the fceux manual http://www.fceux.com/web/fceux-sdl-docs.html, the dip switches is available only through hotkeys. It says there's a "show dip switches" but I couldn't find it in 2.2.3. In BizHawk NES, you get it from NES > VS settings, a dialog with 8 checkboxes (so you can edit and also see it). Emulation stops while you are there and requires core reboot to work. So... for A7800, emulation don't need to be paused for toggling difficulty switches and no need for core reboot. Only a similar dialog with 2 checkboxes: (a clever naming spotted in an atari forum) A = Advanced, the higher difficulty level B = Beginner, the lower difficulty level "Left Difficulty Switch": PORT_DIPSETTING(0x40, "A - Right Position" ) PORT_DIPSETTING(0x00, "B - Left Position" ) PORT_DIPNAME(0x80, 0x80, "Right Difficulty Switch") PORT_DIPSETTING(0x80, "A - Right Position" ) PORT_DIPSETTING(0x00, "B - Left Position" )
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
MESHUGGAH
Other
Skilled player (1920)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
1. Alyosha, can I ask what documents you are using for implementing features? 2. For difficulty switch (previous post), I see this for PAL (probably ntsc same), schematic: http://imgur.com/9EmVuKd NTSC http://imgur.com/4WYWxtY I'm not sure what am I seeing, but does this mean these buttons (l diff, r diff, pause, select, reset) can be pressed at... every frame? every interrupt? vblank? 3. Remaining, non listed bugs - 7800 Birthday (homebrew) can't be started, same apply for EMU7800 - Spikes added (homebrew) boots! However, I think there should be a jump button (atleast I can't jump) (todo: check for source code) - Super Stunt Cycle boots! However, can't do much. (todo: download source code, check what should happen) - Snake (homebrew) - random lag frame fixed! But, for menu, you need to hold the buttons for 4 frames (todo: check for source code)
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Difficulty switches need be accesible in moveis and TAStudio, so I don't think it can be a dialog box. And I do want them to be accessible real time unlike the DIP switches in NES (which are considered sync setting in BizHawk.) I do like the A-B naming convention though, maybe I'll try implementing that and see how it looks.
MESHUGGAH wrote:
1. Alyosha, can I ask what documents you are using for implementing features? 2. For difficulty switch (previous post), I see this for PAL (probably ntsc same), schematic: http://imgur.com/9EmVuKd NTSC http://imgur.com/4WYWxtY I'm not sure what am I seeing, but does this mean these buttons (l diff, r diff, pause, select, reset) can be pressed at... every frame? every interrupt? vblank? 3. Remaining, non listed bugs - 7800 Birthday (homebrew) can't be started, same apply for EMU7800 - Spikes added (homebrew) boots! However, I think there should be a jump button (atleast I can't jump) (todo: check for source code) - Super Stunt Cycle boots! However, can't do much. (todo: download source code, check what should happen) - Snake (homebrew) - random lag frame fixed! But, for menu, you need to hold the buttons for 4 frames (todo: check for source code)
1. The best source is this thread: [MOD EDIT: Removed link to site with commercial ROM content. -Mothrayas] (I posted there recently too looking for extra info) The linked software guide there is my main source of video encoding info: [MOD EDIT: Removed link to site with commercial ROM content. -Mothrayas] For mappers, I use this: http://atarihq.com/danb/7800cart/7800%20bankswithcing%20guide.txt That's about it. A7800 is pretty simple. 3. Is the Birthday one Apple Snaffle? That one works for me. Did you try the most recent dev build?
MESHUGGAH
Other
Skilled player (1920)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
Okay good, you are using the updated sources, that's all I wanted to know. 0.0.0.1642 Water Ski can't be started. Ideally it would start 1 frame after loading the bios (2nd normal frame after many lagframes). TAS that completes the game User movie #38826030913029649 7800 Birthday you can navigate the menu but you cant press start (to use selected menu). Apple snaffle can be started. edit: wrong images Xenophobe NTSC+PAL - looks better, what about the title screen 1 px flickering line? Tower Toppler workaround: press the "right difficulty switch" like this:
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Joined: 7/17/2012
Posts: 545
Location: Switzerland
MESHUGGAH wrote:
Tower Toppler workaround: press the "right difficulty switch"
Ah nice, thanks!
My Citra 3DS rerecording movie files test repositery: https://cutt.ly/vdM0jzl Youtube playlist "Citra Tests": https://cutt.ly/AdM0wg9 http://www.youtube.com/user/phoenix1291
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Water Ski: Works fine for me, needs 2 button controller plugged in . 7800 Birthday: Can you post the name of the ROM you are using? Xenophobe: DMA timing issue, this is a work in progress. (There are a couple such issues, the most serious one being Scrapyard Dog Sewer level.) Tower Toppler: I still need to emulate color artifacting to make it look right. I think one other game needs this too.
MESHUGGAH
Other
Skilled player (1920)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
updated post 0.0.0.1658 7800 Birthday 1.15 from GoodTools, OK, changed joystick to proline controller. Water Ski: OK, but I can't playback my TAS in TAStudio as buttons required to play is changed (2 instead of 1 for example). If I change both controllers, index out of bounds eiher from Maria or at mnemonics. Will try to resync later. Winter games TODO for myself: resync my 1 event TAS (it stopped at player 1 name entry) Other 1st level or just started TASes: tank command, summer games, super skateboardin, Good job on the progresses so far!
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
I rewrote the Maria renderer in A7800Hawk to make it pixel accurate. Now the one stray line in Kung Fu Master is fixed. This also brought with it a dramatic simplification of the code, which makes it much more managable. As accuracy picks up the core is starting to slow down a bit though. I used to be stable 240 FPS at 4x speed, but now I'm maxed out at 200 or so. I'll try to recover a bit of that slowdown once all the bugs are worked out.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
@MESHUGGAH: sorry about the nemonics, I don't recommend trying to do any serious TAS stuff until the core is released, as other thing could still change. Also thank you for the continued testing. I'm making progress on finalizing some of the DMA timing stuff, and have fixed numerous small bugs in emulation. Now the bottom line in Xenophobe is fixed. There are only 3 graphical issues I am currently aware of. Sewer level in Scrapyard Dog: honestly, I'm not sure how to fix this one, The NMI is happening too early, but at the correct scanline according to the Maria DMA's, so I can't really change anything to change the behaviour. Tow Line in Water Ski: On one frame the tow line appears in the wrong spot, not sure what is causing it. Tower Toppler: Intentionally uses color artifacting, not yet implemented I'm also working on some of the more obscure ROMs out there. Here is Rescue on Fractalus, a pretty cool prototype. I'm always impressed by the clever things people are able to come up with to make good use of limited resources.
MESHUGGAH
Other
Skilled player (1920)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
My TASes are done in emu7800, if you fix mnemonics, I could spot minimal oddities/differences between the two core. I will check the other source codes I can find regarding default difficulty switch, controller button required to start game. edit 1: 1. SWCHB $282 Port B, SWCHA $283 Port A. The other naming I found for the two states for difficulty switch is: (B)eginner = 0 (A)dvanced = 1 On SWCHB bit 2 (player 0) and bit 4 (player 1) enables/disables the 2 button joystick mode. Xevious OK! getjoy.s custom codes and handles different joystick will update later: Sphinx - select and reset cleared when pressed mainloop - if not autoplay, poll input - ldawarp illegal force climb ldaswcha - sldkfj Ms PacMan - seeball select Galaga - gmain.s, check the timer for changing difficulty Dig Dug - ZDEBSEL select DOSLCT - ZDOJOY WAITJOY 5 minutes - CHKDEATH - DDMOVE Crossbow - C pause reset joystick lightgun - offscreen hit
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
@MESHUGGAH: I'll look at the nemonics next to see what went wrong, hopefully I should be able to get it to match up. In the mean time, I added light gun support. It still needs testing but I believe it is working correctly. I tested on Sentinel and Crossbow. The detection is not very good in general, so it's a bit hard to spot actual errors, so let me know if anything looks wrong.