Aaron's To-Do List: Difference between revisions

From MAMEDEV Wiki
mNo edit summary
 
(29 intermediate revisions by one other user not shown)
Line 1: Line 1:
Note that nothing here is a promise. This all just represents ideas in my head. Who knows if I'll get to it all!
Note that nothing here is a promise. This all just represents ideas in my head. Who knows if I'll get to it all!


===Immediate Bugs===
==High-level==
* (done: 0.112u2) <strike>add back font size reduction</strike>
* (done) <strike>convert sound cores into devices</strike>
* add warning/error about wacky performance counter results
* (in progress) make scheduling a device thing instead of a CPU thing, allowing any device to participate
* identify and fix up 64-bit specific errors
* integrate proper localization (work with MAMEPlus!)
* add 64-bit debugging code to force allocations above 4GB
* compile with UNICODE=1 for all builds (will deprecate Windows 9x support)
* define & implement more general pipe-like interface for external communication
* change OSD sound interface so it creates sound "targets" much like render targets
* allow setting of realtime clock to fixed value from command line for regression testing


===Video===
==CPUs==
* game-specific crosshair bitmaps and sizes
* write x86 DRC front-end, unifying all x86/NEC variants
* add support for separate visible versus blanking rects
* investigate and fix TMS32031 calculation bug
* font improvements:
** built-in font that is smaller, proportional
** good unicode font
** (done: 0.112u1) <strike>change UI logic to allow for minimum font sizes</strike>
* change some page-flipping drivers to return UPDATE_HAS_NOT_CHANGED if no front buffer access and no page flip since last frame
* add code to not throttle if the video doesn't change? (maybe only for 1 frame)
* move throttling and frameskipping code into the core


===Interrupts===
==Debugger==
* (done: 0.112u1) <strike>add asserts to ensure proper PULSE_LINE/HOLD_LINE usage</strike>
* add timer window
* add MDRV_SCANLINE interrupt generators
* add CHD viewer window
* change MDRV_CPU_VBLANK_INT to specify a screen number
* make workable in a fully command-line fashion
* add timed interrupt generator: cpunum_toggle_input_line_timed(cpu, input, time). This will ASSERT_LINE immediately and then CLEAR_LINE after the specified time. 'time' can be zero, which is equivalent to PULSE_LINE, though perhaps we should discourage such usage since it's not realistic. If you've asserted the line via this function, and another cpunum_assert_input_line_timed() call is made, it will override the previous CLEAR_LINE time with the new time. Note that this is not a proper wire-OR, so we could alternatively reschedule the CLEAR_LINE to the maximum of the new time and the previously pending time.
* convert to using pipes
* separate debugger from core application


===Sound===
==3D==
* (done: 0.112u4) <strike>fix all sound cores to be independent of Machine->sample_rate</strike>
* Add texture management to poly.c
* fix all custom sound generators to be independent of Machine->sample_rate
** Accepts array of 8 32-bit parameters
* (done: 0.112u3) <strike>remove OSD hack that allows changing of sample rates on the fly</strike>
** Hashes those parameters and performs lookups
** Automatically manages via LRU
* Pre-compute textures in voodoo at upload time and remove on-the-fly format conversion for a bit more speed


===Graphics===
==Video==
* fix drawgfx/palette global palette-ness
* render crosshairs in UI layer not in game containers
** certain formats should imply a palette
* game-specific crosshair bitmaps and sizes
** palettes should be independent objects
** user selectable?
** each palette can have multiple clients
* fix crosshair rendering to understand scale and offset factors
** each client can request a list of changes, and clear out flags
* font improvements:
* add laserdisc video viewer in F4 menu if A/V CHD is attached
** start with built-in font, then load others
** support straight playback with frame info
** standardize on BDC as the font format, provide BDF2BDC converter
** single step forward/back
** find a good unicode font
 
** user-selectable at runtime via menu?
===CPUs===
* automatically respect CPUINFO_INT_CLOCK_DIVIDER
* finish work on 64-bit DRC engine
* write 64-bit MIPS3 DRC
* investigate and fix TMS32031 calculation bug
* optimize hyperstone core
* move video timing crap out of cpuexec.c and into video.c
* replace cpuexec.c with more generic schedule.c:
** clients register with a callback that receives a param and a mame_time for execution
** timer is the first client
** can specify maximum period (default is 1 second?)
** execution is round-robin
** anybody can call schedule_resync() to resynchronize execution with items below
** suspend/resume functionality
** time accounting
** global timekeeping
 
===Sources===
* move cleanup tool into tools
* add pngcrc tool to tools
* (done: 0.112u3) <strike>add laserdisc VANC extraction and generation tool to tools</strike>
* move fronthlp.c into common code
* push more options into the code to reduce OSD burden
* (done: 0.112u1) <strike>break core fileio.c into fileio.c and corefile.c</strike>
* (done: 0.112u1) <strike>make util directory with corefile.c and all other utilities with light dependencies</strike>


===Outputs===
==Outputs==
* (done: 0.112u2 by Bob Seidel) <strike>add pause notifications</strike>
* convert output system to use pipes
* add ability to get XML description of current game
* add ability to get XML description of current game
* add lamp output to afterburner driver


===Debugger===
==Drivers==
* clean up APIs
* write tests to figure out 3dfx mipmapping algorithm
* add timer window
* remove use of MDRV_VBLANK_INT(count) where count > 1
* add CHD viewer window
 
===Driver cleanups/To do===
* cliffhgr.c:
* cliffhgr.c:
** add proper latching/buffering to ensure no dropouts
** add proper latching/buffering to ensure no dropouts
** fix 9928a emulation to match [http://www.sventech.com/~dereks/gallery2/main.php?g2_view=core:ShowItem&g2_itemId=2499 screenshot]
** fix 9928a emulation to match [http://www.sventech.com/~dereks/gallery2/main.php?g2_view=core:ShowItem&g2_itemId=2499 screenshot] (broken link)
* astrocde.c
* vicdual.c
* Cubo CD32 (Amiga AGA-based)
* 3DO-based systems
* 3DO-based systems


===Documentation===
==Documentation==
* write debugger documentation
** Debugger basics (covers the main window, the keyboard shortcuts, and a couple of very basic commands)
** Viewing memory (covers disasm/dump, memory and disassembly windows)
** Breakpoints and watchpoints (covers basic breakpoints and watchpoint usage)
** Expressions (covers using expressions to change values and the whole expression syntax)
** Advanced breakpoints and watchpoints (covers conditionals, actions, etc)
** Other techniques (covers tracing and other things)
* write description for how to compute crosshair parameters
* write description for how to compute crosshair parameters


===mamedev.org===
==Other Stuff==
* source code browsing (a la MAWS but with proper spacing) [http://www.newty.de/lsc/index.html option 1] [http://www.andre-simon.de/ option 2]
 
===Other Stuff===
* add regression testing tools to the tools directory
** add png diffing tool
* look into inpout32.dll for hooking up ZVG to WinMAME
* look into inpout32.dll for hooking up ZVG to WinMAME

Latest revision as of 02:38, 25 November 2014

Note that nothing here is a promise. This all just represents ideas in my head. Who knows if I'll get to it all!

High-level

  • (done) convert sound cores into devices
  • (in progress) make scheduling a device thing instead of a CPU thing, allowing any device to participate
  • integrate proper localization (work with MAMEPlus!)
  • compile with UNICODE=1 for all builds (will deprecate Windows 9x support)
  • define & implement more general pipe-like interface for external communication
  • change OSD sound interface so it creates sound "targets" much like render targets
  • allow setting of realtime clock to fixed value from command line for regression testing

CPUs

  • write x86 DRC front-end, unifying all x86/NEC variants
  • investigate and fix TMS32031 calculation bug

Debugger

  • add timer window
  • add CHD viewer window
  • make workable in a fully command-line fashion
  • convert to using pipes
  • separate debugger from core application

3D

  • Add texture management to poly.c
    • Accepts array of 8 32-bit parameters
    • Hashes those parameters and performs lookups
    • Automatically manages via LRU
  • Pre-compute textures in voodoo at upload time and remove on-the-fly format conversion for a bit more speed

Video

  • render crosshairs in UI layer not in game containers
  • game-specific crosshair bitmaps and sizes
    • user selectable?
  • fix crosshair rendering to understand scale and offset factors
  • font improvements:
    • start with built-in font, then load others
    • standardize on BDC as the font format, provide BDF2BDC converter
    • find a good unicode font
    • user-selectable at runtime via menu?

Outputs

  • convert output system to use pipes
  • add ability to get XML description of current game

Drivers

  • write tests to figure out 3dfx mipmapping algorithm
  • remove use of MDRV_VBLANK_INT(count) where count > 1
  • cliffhgr.c:
    • add proper latching/buffering to ensure no dropouts
    • fix 9928a emulation to match screenshot (broken link)
  • 3DO-based systems

Documentation

  • write debugger documentation
    • Debugger basics (covers the main window, the keyboard shortcuts, and a couple of very basic commands)
    • Viewing memory (covers disasm/dump, memory and disassembly windows)
    • Breakpoints and watchpoints (covers basic breakpoints and watchpoint usage)
    • Expressions (covers using expressions to change values and the whole expression syntax)
    • Advanced breakpoints and watchpoints (covers conditionals, actions, etc)
    • Other techniques (covers tracing and other things)
  • write description for how to compute crosshair parameters

Other Stuff

  • look into inpout32.dll for hooking up ZVG to WinMAME