Giter VIP home page Giter VIP logo

breaknes's People

Contributors

ogamespec avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

breaknes's Issues

Chip Features Support

Сейчас:

  • Каждый чип содержит enum Revision
  • Revision - это просто перечисление всех вариантов исследованных чипов
  • Внутри кода проверяется ревизия и симулируется или не симулируется схема, специфичная для данной ревизии

Надо:

  • Оставить enum Revision, но добавить туда ещё Custom
  • Добавить структуру Features для каждого чипа с boolean полями для включения отдельных "фич" (особенностей) aka симуляцию специфичных схем
  • Код теперь будет проверять не Revision, а флажок в структуре Features для решения - симулировать фичу или нет
  • В конструкторе чипа заполнять структуру Features для стандартных значений Revision дефолтными значениями
  • Для кастомных ревизий (Revision = Custom) структура Features задаётся с помощью вызова API SetChipFeatures

Таким образом останется возможность использования как "стоковых" чипов, которые мы изучили, так и создание кастомной "химеры" со своими уникальными особенностями (схемами).

Зачем: @eugene-s-nesdev просил слепить химеру из чипов фамиклона, для создания "идеального" фамиклон-чипа (без багов).

Breakpoints Support

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.

ROM Metainformation (JSONES)

  • Develop a metainformation schema for NES/Famicom ROM files (JSONES aka JSON NES)
  • Make a Runtime converter of .nes format into internal representation of metainformation
  • Popularly explain the idea in the form of a presentation

Fix APUSim

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.

Bad palette (PPU Player 1.1)

Something strange is going on with Color RAM.

It either doesn't display correctly, or it doesn't fill up correctly with values.

image

Great Fusion

Once you have FamicomBoard.cpp + NESBoard.cpp you need to remove all of the copied pieces of code:

  • BreakasmInterop -> BreaksCore
  • M6502CoreInterop + BogusSystem.cs -> BreaksCore BogusBoard.cpp
  • DataPathControl.cs -> SharpTools
  • PPUPlayerInterop -> BreaksCore PPUPlayerBoard.cpp
  • PPUPlayerInterop.cs -> BreaksCoreInterop.cs -> SharpTools
  • LogisimHEXConv.cs -> SharpTools
  • SignalPlotControl.cs -> SharpTools
  • CustomClass.cs -> SharpTools
  • DSound.cs -> SharpTools
  • FurryPlotControl.cs -> SharpTools
  • NSFPlayerInterop -> BreaksCore NSFPlayerBoard.cpp + APUPlayerBoard.cpp
  • NSFPlayerInterop.cs -> BreaksCoreInterop.cs -> SharpTools

corrupt VRAM on some title screens

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.

IOSubsystem

It's about time to develop a subsystem for interacting with controllers and Expansion Ports.

  • BreaksCore API for IO
  • Board bindings
  • Famicom controllers
  • NES controllers
  • Update BoardDescription.json for IO
  • Virtual controllers (DEBUG)
  • Managed input settings dialog + ioconfig.json
  • Managed InputProcessing.cs
  • Check everything works

NSF Player

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.

Mapper UCode engine

Develop an engine to simulate NES/Famicom mappers, using the 6502 microcode.

APU Sim

  • apu.cpp
  • clkgen.cpp
  • core.cpp
  • dma.cpp
  • dpcm.cpp
  • length.cpp
  • noise.cpp
  • square.cpp
  • triangle.cpp
  • debug.cpp

Implement LS139 properly

Soon Famicom will come to disassemble, we will see what is in the chip and make LS139(DMX) properly

Bomberman multiple issues (PPU Player 1.1)

image

  • Scrolling registers change independently and the picture "swims"
  • The image does not match the patterns
  • You can barely see the logo

Scans:

image

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.

KO KO KO Contra

image

Apparently something is going on with the TV scroll (TV PAR Counter / SCCX TV register / something else)

Fix Colors (PPUPlayer)

We need to figure out why the wrong colors are being displayed. Check:

  • Is it CRAM?
  • Is this VideoOut.cpp?
  • Is it an incorrect Goertzel filter?
  • Did I forget to add Color Burst for Goertzel?
  • Is it BGCOL not outputting correctly?
  • Is it something else?

image

Fix NSFPlayerBoard

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.

6527P/6538, T1818P, 6561 for testing

https://forums.nesdev.org/viewtopic.php?p=274887#p274887
https://forums.nesdev.org/viewtopic.php?p=286245#p286245

Выяснено, что:

  1. 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."
    Эмуляторы, в которых имеется функция рандомизации выравнивания - в точности повторяют данный баг.

  2. Ninja Ryukenden 1 (Japan) работает на железе с определенными артефактами и зависаниями в катсценах:
    https://www.youtube.com/watch?v=OdGUmJ4xr1M&t=86s - экран затемняется во время показа картинки меча в интро
    https://www.youtube.com/watch?v=OdGUmJ4xr1M&t=282s - зависон во время катсцены после окончания 1 уровня.
    При этом ни один эмулятор не может в точности повторить это поведение, зато вылезают такие баги:

  • игра зависает при нажатии "start" в главном меню [Mesen 0.9.8, nintendulator, bizhawk, nestopiaue, fceux]
  • эмулятор выдает illegal opcode после нажатия start, затем перезапускает титульник и уже работает нормально после второго нажатия start [Mesen 0.9.9, nintendulatorNRS, myNES]
  • игра зависает сразу на старте выдавая illegal opcode [puNES, Mesen 0.9.9 (at some specific alignments)]
  • Американская версия Ninja Gaiden (USA) НЕ имеет подобных проблем в эмуляторах.
  1. Kyouryuu Sentai Zyuranger и Vice Project Doom/Gun Dec работают БЕЗ ГЛЮКОВ НА ЖЕЛЕЗЕ.
    При этом некоторые эмуляторы (NestopiaUE, My NES и Mesen (лишь при определенных значениях выравнивания))
    имеют проблемы с этими играми:
  • Kyouryuu Sentai Zyuranger зависает совершенно рандомно между катсценами и переходами между дверьми в игре
  • Vice Project Doom/Gun Dec зависает в конце 3-го уровня (в комнате с боссом)

Выяснить, что происходит в пунктах 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

alignment

Example mapper UCode

As an example, implement some simple mapper as UCode to demonstrate and test the engine.

Double FPS (PPUSim)

Once everything is set up, add HLE for some of the circuits and increase FPS by several times.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.