Aaron's To-Do List: Difference between revisions

From MAMEDEV Wiki
mNo edit summary
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===
==Immediate Bugs==
* (done: 0.112u2) <strike>add back font size reduction</strike>
* (done: 0.112u2) <strike>add back font size reduction</strike>
* add warning/error about wacky performance counter results
* add warning/error about wacky performance counter results
Line 7: Line 7:
* add 64-bit debugging code to force allocations above 4GB
* add 64-bit debugging code to force allocations above 4GB


===Video===
==Video==
* game-specific crosshair bitmaps and sizes
* game-specific crosshair bitmaps and sizes
* add support for separate visible versus blanking rects
* add support for separate visible versus blanking rects
Line 18: Line 18:
* move throttling and frameskipping code into the core
* move throttling and frameskipping code into the core


===Interrupts===
==Interrupts==
* (done: 0.112u1) <strike>add asserts to ensure proper PULSE_LINE/HOLD_LINE usage</strike>
* (done: 0.112u1) <strike>add asserts to ensure proper PULSE_LINE/HOLD_LINE usage</strike>
* add MDRV_SCANLINE interrupt generators
* add MDRV_SCANLINE interrupt generators
Line 24: Line 24:
* 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.
* 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.


===Sound===
==Sound==
* (done: 0.112u4) <strike>fix all sound cores to be independent of Machine->sample_rate</strike>
* (done: 0.112u4) <strike>fix all sound cores to be independent of Machine->sample_rate</strike>
* (done: 0.112u4) <strike>fix all custom sound generators to be independent of Machine->sample_rate</strike>
* (done: 0.112u4) <strike>fix all custom sound generators to be independent of Machine->sample_rate</strike>
* (done: 0.112u3) <strike>remove OSD hack that allows changing of sample rates on the fly</strike>
* (done: 0.112u3) <strike>remove OSD hack that allows changing of sample rates on the fly</strike>


===Graphics===
==Graphics==
* fix drawgfx/palette global palette-ness
* fix drawgfx/palette global palette-ness
** certain formats should imply a palette
** certain formats should imply a palette
Line 39: Line 39:
** single step forward/back
** single step forward/back


===CPUs===
==CPUs==
* automatically respect CPUINFO_INT_CLOCK_DIVIDER
* automatically respect CPUINFO_INT_CLOCK_DIVIDER
* finish work on 64-bit DRC engine
* finish work on 64-bit DRC engine
Line 56: Line 56:
** global timekeeping
** global timekeeping


===Sources===
==Sources==
* move cleanup tool into tools
* move cleanup tool into tools
* add pngcrc tool to tools
* add pngcrc tool to tools
Line 65: Line 65:
* (done: 0.112u1) <strike>make util directory with corefile.c and all other utilities with light dependencies</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>
* (done: 0.112u2 by Bob Seidel) <strike>add pause notifications</strike>
* add ability to get XML description of current game
* add ability to get XML description of current game
* add lamp output to afterburner driver
* add lamp output to afterburner driver


===Debugger===
==Debugger==
* clean up APIs
* clean up APIs
* add timer window
* add timer window
* add CHD viewer window
* add CHD viewer window


===Driver cleanups/To do===
==Driver cleanups/To do==
* cliffhgr.c:
* cliffhgr.c:
** add proper latching/buffering to ensure no dropouts
** add proper latching/buffering to ensure no dropouts
Line 84: Line 84:
* 3DO-based systems
* 3DO-based systems


===Documentation===
==Documentation==
* write description for how to compute crosshair parameters
* write description for how to compute crosshair parameters


===mamedev.org===
==mamedev.org==
* 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]
* 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===
==Other Stuff==
* add regression testing tools to the tools directory
* add regression testing tools to the tools directory
** add png diffing tool
** add png diffing tool
* look into inpout32.dll for hooking up ZVG to WinMAME
* look into inpout32.dll for hooking up ZVG to WinMAME

Revision as of 01:32, 1 March 2007

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

  • (done: 0.112u2) add back font size reduction
  • add warning/error about wacky performance counter results
  • identify and fix up 64-bit specific errors
  • add 64-bit debugging code to force allocations above 4GB

Video

  • game-specific crosshair bitmaps and sizes
  • add support for separate visible versus blanking rects
  • font improvements:
    • built-in font that is smaller, proportional
    • good unicode font
    • (done: 0.112u1) change UI logic to allow for minimum font sizes
  • 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

  • (done: 0.112u1) add asserts to ensure proper PULSE_LINE/HOLD_LINE usage
  • add MDRV_SCANLINE interrupt generators
  • change MDRV_CPU_VBLANK_INT to specify a screen number
  • 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.

Sound

  • (done: 0.112u4) fix all sound cores to be independent of Machine->sample_rate
  • (done: 0.112u4) fix all custom sound generators to be independent of Machine->sample_rate
  • (done: 0.112u3) remove OSD hack that allows changing of sample rates on the fly

Graphics

  • fix drawgfx/palette global palette-ness
    • certain formats should imply a palette
    • palettes should be independent objects
    • each palette can have multiple clients
    • each client can request a list of changes, and clear out flags
  • add laserdisc video viewer in F4 menu if A/V CHD is attached
    • support straight playback with frame info
    • single step forward/back

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) add laserdisc VANC extraction and generation tool to tools
  • move fronthlp.c into common code
  • push more options into the code to reduce OSD burden
  • (done: 0.112u1) break core fileio.c into fileio.c and corefile.c
  • (done: 0.112u1) make util directory with corefile.c and all other utilities with light dependencies

Outputs

  • (done: 0.112u2 by Bob Seidel) add pause notifications
  • add ability to get XML description of current game
  • add lamp output to afterburner driver

Debugger

  • clean up APIs
  • add timer window
  • add CHD viewer window

Driver cleanups/To do

  • cliffhgr.c:
    • add proper latching/buffering to ensure no dropouts
    • fix 9928a emulation to match screenshot
  • astrocde.c
  • vicdual.c
  • Cubo CD32 (Amiga AGA-based)
  • 3DO-based systems

Documentation

  • write description for how to compute crosshair parameters

mamedev.org

Other Stuff

  • add regression testing tools to the tools directory
    • add png diffing tool
  • look into inpout32.dll for hooking up ZVG to WinMAME