Новости > Показать отдельно
bsnes 0.045
Yaranga, 16:19, 20-04-2009
Обновился эмулятор SNES. Причём сразу от версии 0.042 до 0.045. Версия 0.043 была отменена автором, а 0.044 просуществовала меньше одного дня.
- bsnes v0.045 released 2009-04-19
This is a maintenance release to fix a crashing bug in S-DD1 games (Star Ocean, Street Fighter Alpha 2), and a video issue in games using the WAI instruction.
As always, my apologies for any inconvenience. SA-1 support required modification of a large amount of delicate code in the emulation core, and our limited testing team was not able to catch these in time before release.
- bsnes v0.044 released 2009-04-19
This release adds full SA-1 support, with no known issues. All 26 games have been tested by myself and others, and a few have been beaten from start to finish. The latter include Super Mario RPG, Kirby's Dreamland 3, Kirby Super Star and Jikkyou Oshaberi Parodius.
Please understand that the SA-1 is essentially four times faster than the SNES' main CPU, so system requirements will be very high for these games. For example, on an E8400 @ 3.0GHz, I average ~160fps in ordinary games. But for SA-1 emulation, this drops to ~90fps, with the worst case being ~80fps.
The following features are emulated:
* 5a22 CPU core (bus-cycle accurate)
* Memory access timing
* SA-1 -> S-CPU interrupts (IRQ + CHDMA IRQ)
* S-CPU -> SA-1 interrupts (IRQ + Timer IRQ + DMA IRQ + NMI)
* SIV / SNV interrupt vector selection
* Timer unit (linear and H/V)
* Super MMC unit (ROM + BW-RAM)
* BS-X flash cart slot mapping
* Normal DMA
* Character-conversion 1 DMA (2bpp + 4bpp + 8bpp)
* Character-conversion 2 DMA (2bpp + 4bpp + 8bpp)
* BW-RAM virtual bitmap mode (2bpp + 4bpp)
* Arithmetic unit (multiplication + division + cumulative sum)
* Variable-length bit processing (fixed and auto increment)
While the following features are not currently emulated, mostly due to lack of information:
* SA-1 bus conflict delays
* Write protection (BW-RAM + I-RAM)
* SA-1 CPU priority for DMA transfers
* DMA access timing
Thanks once again to tukuyomi for hosting this release.
- bsnes v0.043 cancelled 2009-04-18
Immediately after uploading v043, multiple bugs are spotted. How annoying. I'm going to pull and skip v043, sorry for the inconvenience. Hopefully expect v044 soon.
- SA-1 support almost complete ...2009-04-13
Added character conversion DMA mode 1, which fixes level up text in Mario RPG, making it fully playable now with no known issues. Fixed character conversion DMA mode 2, which fixes SD Gundam G Next's graphics. Fixed variable bit-length reading, which fixes Jumpin' Derby's graphics. Improved the SA-1 chip detection code, allowing SD F-1 Grand Prix - Sample to load and run fine.
That leaves Super Bomberman: Panic Bomber World as the only unplayable title, and Haruka Naru Augusta 3 and Pebble Beach no Hotou as the only two games with "minor" graphical issues. The other 23 SA-1 games should all be fully supported.
- New forum and SA-1 updates 2009-04-12
The message board link now points to my own self-hosted forums. Many generous thanks to the ZSNES team for hosting my previous forum for so long. I voluntarily chose to set up my own forum, so there wasn't any problem necessitating this. It was more a logical step now that I have my own fully-fledged domain with SQL support.
Fixed flag settings for S-CPU -> SA-1 IRQs, which should hopefully have Mario RPG fully playable now. Still no actual char conversion 1 support, so the level up message text shows up corrupted. I'm really stumped as to how this is supposed to work. It seems to be similar to the S-DD1's synchronous DMA transfer — of which I have no idea how that is possible at the hardware level.
I also added char conversion 2 support. Not sure of any games that use this, but it should hopefully be fully implemented and correct. Lastly, I added timer support, both HV and linear, and added timer IRQs; although the HV IRQ test checks both H and V always ... still need to allow that to be selectable. I used range testing so as to not affect speed much. But as with char conversion 2, variable bit-length reading and DMA IRQs; I haven't seen any SA-1 titles actually use the timers in any way, so that I could test the implementation.
- IRQs 2009-04-10
Added support for S-CPU -> SA-1 IRQs, DMA IRQs (broken) and NMI IRQs (untested); and for SA-1 -> S-CPU IRQs and char conversion 1 DMA IRQs. This allows Mario RPG to play up to the point of levelling up before freezing. It also makes both Parodius and SRW: Gaiden fully playable. Verified Kirby Super Stars was working the other day. So that's seven out of eight working.
Improved variable bit-length reading, but it's most likely still wrong. Really need to find a game that uses it to test with. Removed asynchronous DPRIO. The most data transferrable that way is 2,048 bytes, and with no test cases I can't verify if my implementation is even partially correct. Better to play it safe than sorry and wait for some hardware tests.
Still need to implement both char conversion modes and timers (and their associated IRQs). Also not sure what SIV and SNV are used for yet.
- Little by little ...2009-04-08
Working on SA-1, still a long way to go. Fixed a bug where I was clearing MA after multiplication / cumulative sum when I wasn't supposed to. Fixes Kirby 3 Pop Star scene.
Added normal DMA, along with full support for DPRIO (allowing DMA to run alongside the SA-1 CPU) and blocking of invalid transfer types / modes. This fixes sprites in Marvelous.
Also added BW-RAM bitmap mirroring to $[60-6f]:[0000-ffff], proper mapping for the bitmap mode to the $[00-3f|80-bf]:[6000-7fff] regions, variable-length bit read data port, and I now at least cache the register settings for IRQs (though I still do nothing with them.)
I added support for BW-RAM and I-RAM write protection, but when it's enabled, most games will no longer load. So I'm forced to leave that off for now. Maybe the protection didn't actually work on the real hardware? Hmm ...
No idea what the bitmap registers $2240-$224f are for, and I don't see how it's supposed to be possible to trigger IRQs as needed by Super Mario RPG and Parodius. But at least three of five games should now be fully playable with no issues. Speed remains the same as yesterday. No hit for the SA-1 CPU+DMA simultaneous transfer mode support.
- SA-1 support 2009-04-07
I was planning to keep this a secret until I got at least one game running correctly, but it didn't take long at all.
So far, Kirby's Dream Land 3 and Dragon Ball Z: Hyper Dimension are fully playable. Marvelous has graphical issues. Super Mario RPG and Parodius 3 lock up. Mostly because I've only emulated the core SA-1 CPU, the Super MMC and the ALU. Still have to implement interrupts and timers, bitmap<->bitplane character conversion, variable bit-length reading, DMA, RAM protection, etc. I plan to support the entire chip, even if most games don't use much of it.
Speed isn't nearly as bad as I thought it was going to be. I get about ~88fps in Kirby 3 in the most intensive parts on an E8400 @ 3GHz. This is compared to ~148fps in Zelda 3. Speed may drop a bit more, especially after supporting the H/V timer, but I'm hoping my theory on how the counters work is correct; such that most games won't need these to be active most of the time.
Overall, it's easily the lowest-level SA-1 emulator around. It's bus-cycle accurate, and syncs immediately with the S-CPU. So even if the S-CPU modifies RAM in the middle of an SA-1 opcode, the SA-1 will immediately detect this 'just-in-time', and vice versa. I even have rudimentary bus-conflict timing support. Eg when both the S-CPU and SA-1 attempt to access game pack ROM at the same time, the SA-1 will stall to allow the S-CPU unfettered access. It isn't perfect, but it should average out to almost exactly the same speed as the real processor. I can improve it easily enough, but it would cause a speed hit in all games. We previously estimated that this level of accuracy would require at least 10GHz. Then again, perhaps it does on the Pentium IV architecture :P
I'm really happy I was able to get this running at a semi-decent speed. Given it's the only co-processor to actually have real timing, and I get to use the cycle-perfect S-CPU core with almost no modifications, I intend to get this as bit-perfect as possible.
Speaking of which, the speed hit for adding SA-1 to other games is roughly ~3-5%. This is because the core timing mechanism of the emulator needs to support a co-processor thread. There's just no easy way to avoid adding co-processor checks to the most CPU-intensive part of the emulator.
Lastly, this isn't an invitation to harass me about adding SuperFX support :P
I recently re-wrote the S-CPU opcode macro processor to use a more generic approach, and decided to abstract the opcodes to share them with an SA-1 core. Needless to say, I was quite surprised to get at least two games fully playable with only two days' worth of effort.
хых [18:19, 20-04-2009]
Не более 40 fps в SA-1 играх на Pentium 4 3Ghz
Имаго [20:04, 20-04-2009]
На Athlon64 X2 5600+ (2.8 GHz) - 60 fps во всех играх. С HQ2x и NTSC видео-фильтрами в играх, использующих SA-1, падает до 30 =(
Annihilator [17:05, 22-04-2009]
На C2D E6750 со всеми фильтрами, сглаживанием и т.п. 50 fps во всех играх.
Dimahoo (Euro 000121)
Игры MAME
» Kinbeas vs. Charmy Games 15:06
» Мапперы 111 и 446 для новых игр NES !? 14:55
» samsung oddysey g6 32( пропадает изображение) 13:53
» Лучший эмулятор Sega Genesis 13:32
» Журнал Downgrade 13:00
» Раздача игр, обмен и просто халява 12:30
» Какие хаки проходили/планируете пройти 12:21
» Помогите выбрать портативную консоль-эмулятор (не PSP) 10:53
» запись дисков Sega CD 09:40
» Ищу 2D игру в жанре Экшен, вид с боку, с консоли Dingoo a320. Оружие бумеранг 09:38
» [SMD] Хак Zero Tolerance 09:28
» Телеметрия — вас это волнует? 09:12
» Старые игры создавались специально под ЭЛТ экраны? 09:04
» Рассуждения об играх 08:23
» Ремонт Dendy картриджа 05:41