Skip to content

x16-emulator-r39 ("Buenos Aires")

Compare
Choose a tag to compare
@mist64 mist64 released this 29 Mar 21:05
· 77 commits to master since this release

Known issues (fixed in repo):

  • CodeX does not work
  • RTC does not work
  • Emulator reports r38 (ROM correctly reports r39)

Main differences:

  • Switch to Proto2 Hardware
    • banking through zp addresses 0 and 1
    • modified I/O layout
    • modified VIA GPIO layout
    • support for 4 controllers
    • I2C bus with SMC and RTC/NVRAM
  • ROM Changes:
    • SD card and banked LOAD fixes
    • 320x240 framebuffer (mode $80/128)
    • 80x30,40x60,40x30,40x15,20x30,20x15 text modes
    • more powerful keyboard APIs
    • full SNES-like keyboard joystick
    • BASIC LOCATE
  • CodeX Interactive Assembly Environment
  • macOS emulator is now universal Intel/ARM, Windows emulator is now 64 bit

Compatibility notes: You'll need to update your code if you

  • changed ROM or RAM banks by writing VIA registers (it's $00/$01 now)
  • accessed VIAs directly (different location)
  • used SCREEN or JOY in BASIC, the API has changed
  • used screen_set_mode, the API has changed
  • used the floating point Math library, the API has changed

See the Programmer's Reference Guide for details.

Emulator:

  • Features
    • implemented VIA timers [Natt Akuma]
    • added option to disable sound [Jimmy Dansbo]
    • added support for Delete, Insert, End, PgUp and PgDn keys [Stefan B Jakobsson]
    • debugger scroll up & down description [Matas Lesinskas]
    • added anti-aliasing to VERA PSG waveforms [TaleTN]
  • Bugs
    • fixed sending only one mouse update per frame [Elektron72]
    • fixed VSYNC timing [Elektron72]
    • switched front and back porches [Elektron72]
    • fixed LOAD/SAVE hypercall so debugger doesn't break [Stephen Horn]
    • fixed YM2151 frequency from 4MHz ->3.579545MHz [Stephen Horn]
    • do not set compositor bypass hint for SDL Window [Stephen Horn]
    • reset timing after exiting debugger [Elektron72]
    • don't write nvram after every frame
    • fixed write outside of line buffer [Stephen Horn]
    • fixed BRA extra CPU cycle [LRFLEW]
    • fix: clear layer line once layer is disabled
    • fixed BBSx/BBRx timing [Natt Akuma]
  • Other
    • misc speed optimizations [Stephen Horn]

ROM:

  • KERNAL
    • Adaptation to match Proto 2 Hardware
      • support for 4 SNES controllers
      • 512 KB ROM instead of 128 KB
      • new I/O layout
      • PS/2 and SNES controller GPIOs layout
      • banking through $00 and $01
    • Proto 2 Hardware Features
      • I2C bus (driver by Dieter Hauer, 2-clause BSD)
      • SMC: reset and shutdown support
      • RTC: DA$/TI$ and KERNAL APIs bridge to real-time-clock
    • Screen Features
      • New screen_mode API allows setting and getting current mode and resolution
      • support for 320x240 framebuffer (mode $80/128) [with gaekwad]
      • added 80x30,40x60,40x30,40x15,20x30,20x15 text modes (note new numbers!)
    • Keyboard Features
      • added KERNAL vector to allow intercepting PS/2 codes [Stefan B Jakobsson]
      • added kbdbuf_peek, kbdbuf_get_modifiers, kbdbuf_put API
    • Other Features
      • support for LOADing files without 2-byte PRG header [Elektron72]
      • support for LOAD into banked RAM (acptr and macptr)
      • support BEL code (PRINT CHR$(7))
      • keyboard joystick (joystick 0) supports all SNES buttons
      • support for 4 SNES controllers (joystick 1-4) [John J Bliss]
    • Bugs
      • fixed crash in FB_set_pixels for count>255 [Irmen de Jong]
      • fixed bank switching macros [Stephen Horn]
      • fixed preserving P in JSRFAR [CasaDeRobison]
      • fixed race condition in joystick_get [Elektron72]
      • removed ROM banking limitations from JSRFAR and FETVEC [Elektron72, Stefan B Jakobsson]
      • fixed disabling graphics layer when returning to text mode [Jaxartes]
      • fixed default cursor color when switching to text mode
      • reliable mouse_config support for screen sizes
  • Math
    • renamed "fplib" to "math"
    • made Math package compatible with C128/C65, but fixing FADDT, FMULTT, FDIVT, FPWRT
  • BASIC
    • Features
      • added BIN$ & HEX$ functions [Jimmy Dansbo]
      • added LOCATE statement
    • Bugs/Optimizations
      • removed extra space from BASIC error messages [Elektron72]
      • fixed DA$ and TI$ when accessed together or with BIN$()/HEX$() [Jaxartes]
      • fixed null handling in GET/READ/INPUT [Jaxartes]
      • fixed bank setting in VPOKE and VPEEK [Jaxartes]
      • fixed optional 'color' argument parsing for LINE, FRAME, RECT
  • DOS
    • reliable memory initialization
    • fixed writing LFN directory entries across sector boundary
    • fixed missing partitions ($=P) if type is $0B
    • fixed loading to the passed-in address when SA is 0 [gaekwad]
    • fixed problem where macptr would always return C=0, masking errors
  • GEOS
    • text input support
  • CodeX
    • integrated CodeX Interactive Assembly Environment into ROM [mjallison42]