emu-russia / breaknes Goto Github PK
View Code? Open in Web Editor NEWNES/Famicom/Dendy emulator at the gate level (WIP)
License: Creative Commons Zero v1.0 Universal
NES/Famicom/Dendy emulator at the gate level (WIP)
License: Creative Commons Zero v1.0 Universal
Сейчас:
Revision
Надо:
Revision
, но добавить туда ещё Custom
Features
для каждого чипа с boolean полями для включения отдельных "фич" (особенностей) aka симуляцию специфичных схемRevision
, а флажок в структуре Features
для решения - симулировать фичу или нетFeatures
для стандартных значений Revision
дефолтными значениямиRevision
= Custom
) структура Features
задаётся с помощью вызова API SetChipFeatures
Таким образом останется возможность использования как "стоковых" чипов, которые мы изучили, так и создание кастомной "химеры" со своими уникальными особенностями (схемами).
Зачем: @eugene-s-nesdev просил слепить химеру из чипов фамиклона, для создания "идеального" фамиклон-чипа (без багов).
We need to add a tab and support for simulation breakpoints.
This is not hard to do. Just call GetDebugInfo from BreaksCore and check breakpoint condition. If it matches, display MessageBox and set Paused=true.
This way you can e.g. stop PPU on required scanline (H-Counter) or e.g. when some signal takes some value.
JSON NES
)We need to add a VRAM display (Name Table + Attr Table), familiar to humans.
it's all playing at the same frequency.
By @quietust
copyright menu only
Make the sprites appear on the Debug tab.
Something strange is going on in APUSim. We need to figure out what exactly is wrong there and fix all the little bugs.
Presumably it has to do with the sequence of APU blocks simulation (propagation delay).
But we have had cases when the errors were found even in the chip topology (PPUSim). As for the APU, it must not be that bad - after all we have a working model for Logisim and an APU implementation in HDL which is covered by a large number of test benches.
The best way to catch errors would be to add signal tracing, like in PPUPlayer.
Once you have FamicomBoard.cpp + NESBoard.cpp you need to remove all of the copied pieces of code:
Using the reference circuit: https://github.com/ogamespec/breaks/blob/master/Docs/Famicom/Famicom_Scheme_IO_Annotated.png
With V1.8, I'm seeing corrupt VRAM on the following games:
10-Yard Fight
Mach Rider (PRG0)
Soccer
Dragon Quest II
Magmax
Wild Gunman (PRG1)
Urban Champion
Zippy Race
And separately:
Pac-Land (scrolling problem)
I don't know if that helps, but I can look for more. Fascinating project.
When there are too many samples, something overflows somewhere:
But it continues to work by a miracle.
By @andkorzh
It's about time to develop a subsystem for interacting with controllers and Expansion Ports.
Add a basic framework for implementing APUSim. The application must be able to emulate 6502 (NSF format requirements) and play the audio buffer under .NET.
Develop an engine to simulate NES/Famicom mappers, using the 6502 microcode.
Soon Famicom will come to disassemble, we will see what is in the chip and make LS139(DMX) properly
Add possible infinite rendering of what is in VRAM/OAM/CRAM/CHR, without using the CPU I/F registers dump.
Scans:
Also not very healthy, because the visible part of the signal is very sloping and rises just above the black level. Although the phase component slips here and there. Well, in fact, it can be seen on the screen - blackness + sometimes dark spots.
https://www.nesdev.org/wiki/VTxx
Systems include VT02 (no extra RAM settings), VT03 (with cart SRAM enabled), VT09 (with internal RAM at $0000-$0FFF, and with cart SRAM enabled), and VT32 (Same RAM settings as VT09). maybe later for VT369 if figured out.
These settings are based on Nintendulator-NRS, so take it with a grain of salt.
There's something strange going on at NSFPlayerBoard right now. The last time there were problems with setting the PC for the 6502 and "calling" the INIT/PLAY procedures. When all small bugs in APUSim are fixed, go back to NSF support and get this thing working properly.
https://forums.nesdev.org/viewtopic.php?p=274887#p274887
https://forums.nesdev.org/viewtopic.php?p=286245#p286245
Выяснено, что:
Eliminator Boat Duel (USA) и Star Wars JVC (USA) зависают в зависимости от состояния выравнивания CPU/PPU на реальном железе.
"Reading $2002 at the exact start of vblank clears the flag to 0 without reading back a 1. On most consoles and with most wait loops, an alignment is eventually reached such that the flag is read other than on at the exact start of vblank. However, Dendy-style PAL famiclones have a frame of exactly 113.667 by 312 = 35464 cycles, and 35464 is a multiple of 8. A bit/bpl loop that crosses a page boundary, such as that found in the game Eliminator Boat Duel, lasts 8 cycles. On some alignments, it hits the start of vblank every time and thus always fails to advance.
So for the $2002 wait loop, do not make a wait loop whose length in cycles evenly divides the frame length."
Эмуляторы, в которых имеется функция рандомизации выравнивания - в точности повторяют данный баг.
Ninja Ryukenden 1 (Japan) работает на железе с определенными артефактами и зависаниями в катсценах:
https://www.youtube.com/watch?v=OdGUmJ4xr1M&t=86s - экран затемняется во время показа картинки меча в интро
https://www.youtube.com/watch?v=OdGUmJ4xr1M&t=282s - зависон во время катсцены после окончания 1 уровня.
При этом ни один эмулятор не может в точности повторить это поведение, зато вылезают такие баги:
Выяснить, что происходит в пунктах 2 и 3.
На основе этой информации будет возможно улучшить современные эмуляторы, которые имеют проблемы с этими играми. Разработчик Mesen писал:
"emulators are still pretty far from simulating stuff that occurs at a precise point within a cpu/ppu cycle, the alignment options in mesen don't do this either, even though it's definitely something that has impact on hardware"
ТАБЛИЦА:
excel-alignment.zip
As an example, implement some simple mapper as UCode to demonstrate and test the engine.
There are no sprites in the signal rendering.
Need to find out where they went and how to get them back.
Needed for operation without RegDump
Using the reference circuits: https://github.com/ogamespec/breaks/tree/master/Docs/NES
Cab you please add this? Here is a list of mappers to add:
Once everything is set up, add HLE for some of the circuits and increase FPS by several times.
Sometimes there are some white strips under the menu. Scrolling bug? SPR0 Hit?
Super Mario Bros. (JU) [!]_RegDump.zip
Reported by @eugene-s-nesdev
Check.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.