Developer log

From vice-emu
Revision as of 04:24, 6 July 2011 by Gpz (talk | contribs) (→‎trunk)
Jump to navigation Jump to search

The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.

Branches

Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of.

Config split

  • Datadir uses machine_name as before, config/hotkeys/fliplist/etc (should) use machine_get_name() instead
  • Use "C64SC" for x64sc
    • NOTE: data/C64 is still used for x64sc
    • TODO: check config/etc file names/usage for: win32 (especially if the shared C64/win_shortcuts.vsc is problematic)
  • Use "VSID" for vsid
    • Due to the config split, it is finally possible to have VSID config/hotkeys/etc
    • TODO: add load/save settings (vsid) UI items for: beos, os/2, win32
  • Use "CBM-II-5x0" for xcbm2 -model 510
    • Should get rid of segfaults when using different models with same config
    • TODO: check config/etc file names/usage for: win32 (especially if the shared CBM-II/win_shortcuts.vsc is problematic)

trunk

  • chris/v2.1-quicktime [2.1.2]
    • NEW: added QuickTime movie exporter (on Mac OS X for now)
    • API: introduced new soundmovie.c sound exporter
    • API: gfxoutput.h: extended interace of gfxoutputdrv_t
gfxoutputdrv_format_t *formatlist; // optional format list for exporter
void (*shutdown)(void);
int (*resources_init)(void);
int (*cmdline_options_init)(void);
    • Tested: Mac+Cocoa, Mac+Gtk, Mac+Xaw
    • Open: Adapted all UIs to use generic formatlist from extended gfxoutput_drv interface
  • soundrework.
    • oversampling setting removed. Oversampling is a bad, mostly unused solution for slightly improved audio quality. We can just do proper resamplers for machines that need it.
    • shorter sound buffer requires using audio buffers to their capacity. Some drivers may exhibit bugs with bufferspace() hook when audio buffer gets completely filled. These should be identified by bad behaviour on low latency setting such as 50 ms, while other sound drivers on same system might still work.
  • Userport Joystick Interface support (r20807)
    • NEW: 2 new virtual joysticks
    • API: joystick_port_map[] (arch/*/joy.[ch]) size changed from 2 to 4 (JOYSTICK_NUM, joystick.h)
    • Resource: ExtraJoy (toggle) and ExtraJoyType see src/joystick.h for the types.
    • TODO: UI items for the following ports: os2
    • TODO: Make the joystick UI correct, to clarify: c128, c64, c64dtv, cbm5x0 and plus4 have 2 native joystick port, vic20 has only 1 native joystick port and pet and cbm6x0/7x0 have no native joystick ports at all. The HIT userport joystick adapter can only be used on c64/c128, the other userport joystick adapters can be used on c64, c128, c64dtv, cbm6x0/7x0, pet and vic20.
    • NOTE: Network code uses the new size; this may be a problem.
  • Plus4 SID cart add-ons support (20977)
    • Resource: DIGIBLASTER (toggle) for the digibooster add-on and SIDCartJoy (toggle) for the joystick port on the sidcart.
    • TODO: xplus4 UI items for the following ports: os/2
  • Lightpen/gun support (21132)
    • NEW: Lightpen/gun emulation in x64, x128 and xvic
    • Resource: Lightpen (toggle)
    • Resource: LightpenType (enum, see lightpen.h)
      • 0=Pen with button Up (TODO: product name Atari CX75)
      • 1=Pen with button Left (TODO: product name?)
      • 2=Datel Pen
      • 3=Magnum Light Phaser
      • 4=Stack Light Rifle
    • TODO: Lightpen driver and UI items for the following ports: amiga, beos, os/2
    • NOTE: see SDL or win32 for driver implementation example
    • TODO: Fix clock calculation in VDC
    • TODO: other x's?
  • xvic cartridge system rewrite (21222)
    • NEW: Rewritten modular cartridge emulation similar to that of x64.
    • NEW: Mega-Cart emulation
    • Resource: CartridgeType (enum, see cartridge.h)
    • Resource: CartridgeFile (string)
    • Resource: CartridgeReset (toggle)
    • Resource: GenericCartridgeFile2000 (string)
    • Resource: GenericCartridgeFile4000 (string)
    • Resource: GenericCartridgeFile6000 (string)
    • Resource: GenericCartridgeFileA000 (string)
    • Resource: GenericCartridgeFileB000 (string)
    • NOTE: see win32/SDL/*nix UI for menu implementation.
    • NOTE: CartridgeFile and GenericCartridgeFileX000 and NOT meant to be manipulated directly by the UI. See the above note.
    • TODO: .crt like cartridge format (.vrt)
  • x64/x64sc/x128 Cartridge System (r22615)
    • changed cartridge_detach_image() to take the cartid (from cartridge.h) as parameter. all UIs have been changed to pass -1, which means "all cartridges".
    • NOTE: UIs that actually support to attach several carts should use the param properly, and should use this function instead of changing whatever associated resource directly. (this will make it easier to change the underlying mechanism without breaking everything all the time)
    • to clearify: generic actions such as attaching/enabling/detaching a cartridge should be done through the generic api in cartridge.h. using the individual resources to enable/disable a cartridge will still work, but is "deprecated".
  • x64/x64sc/x128 Cartridge System (r22623)
    • changed cartridge_get_file_name(), takes the cartid instead of the (meaningless) address for c64 now
      • affected emus: vic20 (the "WORD" in the prototype changed to "int", and it passes an address for type, and the "int" may now make it fail on 16bit hosts, meh :)) the logic should be changed to use cartids from cartridge.h instead, shouldnt matter else :)
    • a new function c64export_query_list() defined in c64export.h can be used to get a list of all currently attached/active cartridges, so you can eg use it in a dynamic menu and detach them using cartridge_detach_image(). look in c64export.c:c64export_dump() for a small usage example.
    • TODO: fix MSDOS port, fix VIC20
  • Expert Cartridge
    • renamed Resource: "Expert" to "ExpertCartridgeEnabled" (toggle)
    • TODO: ports that use cartridge_attach_image(CARTRIDGE_EXPERT, NULL) (which will now fail!) must now simply set "ExpertCartridgeEnabled" to 1 to enable use cartridge_enable(CARTRIDGE_EXPERT) (as with other carts).
    • renamed Resource: "CartridgeMode" to "ExpertCartridgeMode" (enum: 0=off 1=prg 2=on)
  • "PAL Emulation" is available in NTSC mode (r22746)
    • NEW: proper rendering with CRT emulation in NTSC mode
    • it is suggested to rename user visible strings that refer to "PAL Emulation" or "PAL Settings" to "CRT ..." to make clear that it is not only available in PAL mode.
    • ports that forced "PAL Emulation" disabled in NTSC mode should be changed so "PAL Emulation" can be enabled, and related options are available regardless of current video mode.
  • Gamma Calculation changed (r22749)
    • Resource: "ColorGamma" range was changed to 0...4000, and the new default is 2200 (which is the VGA 2.2 gamma). this change was needed to be able to handle different gammas of PAL/NTSC/etc. (and using the actual display hardware gamma as param is more intuitive too).
    • TODO: fix UI items of the following ports: os/2
    • possibly some #ifdef magic can be added in src/video/video-resources-pal.c to define correct defaults for platforms that don't use 2.2
  • "true aspect ratio" option (r22749)
    • geometry_s now contains (float)pixel_aspect_ratio which can be used to (optionally) scale the output canvas to get the true aspect ratio of the currently active video mode.
      • scale output rectangle horizontally by pixel_aspect_ratio if "true aspect ratio" option is enabled
      • to maintain consistency across ports, use Resource:"TrueAspectRatio" (toggle). (must be defined in arch dependend files)
        • SDL UI intentionally breaks this as it had "SDLGLAspectMode" that bent naturally from a toggle to an enum
    • TODO: implement in ports that can make use of this: (other with hw scaling?)
  • "PAL Emulation" "CRT Emulation" is available for CRTC and VDC (r22752)
    • NEW: proper rendering with CRT emulation for CRTC and VDC output
    • Resource: CrtcExternalPalette (toggle)
    • Resource: VDCExternalPalette (toggle)
    • all ports that forced "PAL Emulation" disabled should be changed so "CRT Emulation" can be enabled, and related options are available regardless of current video chip. all related special cases can be removed.
    • TODO: fix UI items of the following ports: os/2 (x128, xpet, xcbm2)
    • TODO: rename PAL emulation to CRT emulation on the following ports: os/2
  • IDE64 emulation can now handle 4 harddrive images. (r22824)
    • Resource: IDE64Image renamed/changed to IDE64Image1, IDE64Image2, IDE64Image3, IDE64Image4
    • TODO: add/fix UI items for the following ports: os/2.
  • NEW: IDE64 emulation can emulate IDE64v4 (r22824)
    • Resource: IDE64version4 (toggle)
    • TODO: add/fix UI items for the following ports: os/2
  • CIA model 6526x (r22951)
    • NEW: old CIA model without the timer B bug (see cia.h)
      • "6526" is the old CIA without the timer B bug (this should match measured results)
      • "6526A" is the new CIA (this should match the measured results)
      • "6526x" is the old CIA with the timer B bug (this is the old VICE behaviour, no real chip found yet)
  • NEW: archdep_fix_permissions (r23053)
    • should set the permissions of a given file to "rw", respecting the current umask (if any)
    • TODO: add proper code for the following ports: beos, os/2, riscos
    • TODO: ...and copy to arch/sdl/archdep_* when doing that
  • List of canonical names for cartridges
    • cartridge.h now contains constants for (user visible) cartridge names. UIs should, if possible, use these constants - and if not atleast adhere to their spelling. Another advice is to remove redundant references to cartridge names from sub-menus and generally unifying them, in order to bring the overall number of messages down. (see *nix or SDL ui as an example).
  • Remove 'IEC' references from user visible printer descriptions in both commandline options and uis
    • TODO: check and fix commandline options and check/fix the following ui's: osx, *nix, win32.
  • CIA model 6526x removed (r23531)
    • No 6526 without the timer B bug encountered, hence 6526 replaced with former "6526x". The CIA models are (see cia.h):
      • "6526" is the old CIA
      • "6526A" is the new CIA
    • TODO: remove 6526x UI item from the following ports: osx
  • ACIA/swiftlink/turbo232 base selectable, $DE00/$DF00 for c64/c128 and $D700 for c128 only (r24036)
    • TODO: add ACIA base address select UI item for the following ports: beos, os/2, osx
  • MasC=uerade adapter support added to xvic.
    • TODO: add georam, digimax, acia/swiftlink/turbo232, sfx sound sampler, sfx sound expander and tfe UI items for the following ports: beos, os/2, osx
  • IDE64 geometry selection now seperate for each harddrive image (r24191)
    • Resources have changed:
      • Resource: IDE64Cylinders has become IDE64Cylinders1, IDE64Cylinders2, IDE64Cylinders3 and IDE64Cylinders4.
      • Resource: IDE64Heads has become IDE64Heads1, IDE64Heads2, IDE64Heads3 and IDE64Heads4.
      • Resource: IDE64Sectors has become IDE64Sectors1, IDE64Sectors2, IDE64Sectors3 and IDE64Sectors4.
      • Resource: IDE64AutodetectSize has become IDE64AutodetectSize1, IDE64AutodetectSize2, IDE64AutodetectSize3 and IDE64AutodetectSize4.
    • TODO: Change IDE64 UI elements for the following ports: beos, os/2, osx
  • additional functions signals_pipe_set() and signals_pipe_unset() added in arch/*/signals.c (r24261)
    • see bug 3201796 on how to check if a port has this problem. if yes, set up a signal handler for SIGPIPE that calls monitor_abort() (see the unix code as an example). if not, just locate the respective fixme note in 'your' sourcefile and remove it.
    • TODO: check/confirm/implement for the following ports: amiga, beos, dos, os2, riscos, sdl, win32
    • Note: signals_init() in riscos seems to be broken, perhaps worth checking in detail.

List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl

List of ports outside UI updates: gp2x, riscos