Giter VIP home page Giter VIP logo

pureikyubu's People

Contributors

ogamespec avatar raphaelthegreat 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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pureikyubu's Issues

UI Stability

  • Run all features after changed to Unicode
  • Debug X86 Unicode
  • Debug X64 Unicode
  • Release X86 Unicode
  • Release X64 Unicode
  • Debug console commands
  • Settings are loading and saving ok

DSP analyzer

  • Group 0
  • Group 1
  • Group 2
  • Group 3
  • Group 4
  • Group 5
  • Group 6
  • Group 7
  • Group 8
  • Group 9
  • Group A
  • Group B
  • Group C
  • Group D
  • Group E
  • Group F
  • Packed opcodes

Multithreading

Implement the work of the main subsystems by threads:

  • Processor execution
  • Ui update
  • GPU (Gx)
  • Debugger
  • DSP

Audio support

Implement AI DMA playback

  • AI documentation
  • DMA AI thread
  • AI SRC
  • AI Mixer
  • Audio backend

DSP low-level emulation

Add to HW a module for low-level DSP emulation and a pedals for controlling it (it works in its own thread).

Gekko Analyzer

Replace alien GekkoDisasm with an analyzer, similar to how it was done for DSP. Later use the analyzer for the interpreter and recompiler.

DSP->CPU Mailbox signal interrupts?

Found that games on AX Ucode freeze after writing the 0xDCD10000 value to the DSP Mailbox.

Research how AX Ucode sending DSP interrupt to CPU, by writing into DSP Mailbox.

Idle Loops

Need to research Dolphin OS Idle thread and possibilities to skip it.

Test Bust a Move 3000 AX UCode

Test command list execution

0C00 [00 00] [80 19 70 00] [00 07] [80 19 2C E0] [00 02] [80 19
0C08 70 40] [00 03] [00 12] [80 00] [00 0A] [80 0D F9 80] [00 0E]
0C10 [80 19 2C E0] [80 19 2A 60] [00 0F] [00 00] 00 00 00 00
0C18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Decoded:
[00 00] [80 19 70 00] 					Init
[00 07] [80 19 2C E0] 					Load last played 640B Frame buffer (STEREO)
[00 02] [80 19 70 40] 					Setup first Voice Parameters Block
[00 03]  								Mix
[00 12] [80 00] [00 0A] [80 0D F9 80]
[00 0E] [80 19 2C E0] [80 19 2A 60] 	Copy out 640B + 640B bytes (2 Frames)
[00 0F] [00 00] 						End
  • Command 0 (Init)
  • Command 7 (Setup Stereo Samples)
  • Command 2 (Setup Voice Parameters Block)
  • Command 3 (Mix)
  • Command 0x12 (?)
  • Command 0xE (Samples Copy Out)
  • Command 0xF (Switch AX Task)

Research cache emulation

Need to research how L1/L2 cache affects emulation.

  • Read cache docs
  • Implement Data cache
  • Fix lurking bugs
  • Implement Locked Data cache
  • Test DolphinOS cache demos
  • Test DolphinOS locked-cache demos

Debugger Thread

Implement debugger working in its own thread.

(non-invasive presence)

Dolphin OS Threads dump

Required sometimes.

Why is it necessary

Some games freeze in one of the threads, polling something. If you look from the debugger, the context switches back and forth and it is difficult to catch such moments.

Dumping current Dolphin OS threads will simplify the task.

Unicode in UI

Unicode support in UI.

  • MC.cpp
  • GCNHighLevel
  • UserFonts.cpp
  • UserMemcards.cpp
  • UserSelector.cpp

Gekko Jitc x64

Implement a recompiler that works correctly in all operating modes (with debugger and breakpoints, with Mmu)

Basics

  • Docs
  • Proof-of-concept
  • Interpreter fallback mode

Gekko ISA

  • Integer Instructions (112)
  • Floating-Point Instructions (65)
  • Paired Single Instructions (54)
  • Integer Load and Store Instructions
  • Floating-Point Load and Store Instructions (17)
  • Paired Single Load and Store Instructions (8)
  • Branch Instructions (12)
  • Condition Register Logical Instructions (9)
  • Misc Instructions (33)

DSP interpreter

Make some.

  • Flow control
  • Load/Store
  • Move
  • Logic operations
  • FLAGS
  • Multiplier
  • ADD/SUB
  • Packed instructions
  • Condition Code

Wtf wrong with CMPAR

006E 0A 13       	lris 	ax1.l, 19 					// ax1.l = 19 (const)
006F C1 00       	cmpar	ac0, ax0.h      	     	 // ax0  -- Where? :p     Must be cmpar ac0, ax1.l  ??

Wtf?

Other cmpar looks good.

DSP MMEM DMA

Implement DSP DMA <-> Main memory.

DSP IFW regs are known.

Sampling profiler

Implement visual studio-like sampling profiler for Gekko (to see bottlenecks in emulated software).

  • Documentation
  • Sampling thread and commands
  • RnD tool to visualize sampled data

DSP debug

Add commands to debug the DSP and view its status.

  • dspdisa: Disassemble ucode dump
  • dregs: Show dsp registers
  • dmem: Dump DSP DMEM
  • imem: Dump DSP IMEM
  • drun: Run DSP thread until break, halt or dstop
  • dstop: Stop DSP thread
  • dstep: Step DSP instruction
  • dbrk: Add IMEM breakpoint
  • dunbrk: Clear all IMEM breakpoints
  • dpc: Set DSP pc
  • dreset: Issue DSP reset
  • du: Disassemble some DSP instructions at program counter

MMU

Implement MMU to run GC-Linux and Star Wars: Rogue Squadron II โ€“ Rogue Leader

  • Gekko memory interacion refactoring
  • Virtual Gekko architecture diagram
  • Read about MMU (refresh memory)
  • Block Address Translation (BATs)
  • Segment memory translation (SRs)
  • DSI / ISI
  • Support Modify/Access PTE Bits

DSP Bogus Accelerator

Accelerator which returns zeros (no sound). Enough for the DSP code to work.

When we make sound, add ADPCM decoding for it.

Mount DolphinSDK as virtual DVD

To test DolphinSDK demos, need to mount the DolphinSDK folder as a virtual DVD.

Alternatively, you can create GCM with DolphinSDK disk data, but mounting a folder can come in handy, plus it's an interesting task.

  • Read DVD structure docs
  • Inspect DolphinSDK. Does it contain everything you need for a virtual DVD
  • Add API
  • Implement mounting
  • Test some demo which require DVD data

CARDUnlock and DSP

Need to check how unlocking of memory cards goes when DSP Ucode works to unlock cards.

The best way to check is to try the demos from the SDK.

Fix JAudio microcodes

JAudio (Zelda) microcodes should not block application execution. Since they are designed in such a way that the command exchange is performed by the Mailbox polling - an error in the execution of the microcode followed by the DSP shutdown causes the JAudio DspSendCommand method to freeze in the endless Mailbox poll, and the application also freezes.

Standalone UI

Need to refactor all the UI code into a separate project.

Research DDU Interface

Research the pinout of the connector and how DDU is involved in playing streaming audio.

Json.hpp

Common JSON serialization component.

  • Serialize TCHAR string
  • Deserialize UTF8 string

DVDConvertPathToEntrynum Reversing

Reverse DVDConvertPathToEntrynum

There is no money for a paid IDA Pro, and downloading a pirate conscience is not allowed (plus I stream progress). Therefore, we will try to reverse this branching bitch with improvised means.

  • Json call graph
  • Json -> yEd Graphml
  • c++

Test IROM execution in IPL

Test it, when DSP interpreter is ready:

  • Enable tracing to see what happens.
  • Measure Mailbox access timings (in Gekko TBR ticks).
  • Watch for ARAM DMA mapped to IRAM
  • Inspect IROM microdcode FEED loop
  • Inspect IROM DMA routines

Learn GX docs

Examine existing documentation and consider the architecture of the GX emulation module.

Bootrom support

Add IPL support and establish correct operation in it, including setting the time (RTC) and dynamic change of DVDs.

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.