Releases: alekmaul/pvsneslib
Releases · alekmaul/pvsneslib
4.3.0
What's Changed
- HiROM | FastROM support by @DigiDwrf in #273
- Mouse support by @DigiDwrf in #274
- Super Scope support added, some other changes by @DigiDwrf in #276
- Super Scope Example update by @DigiDwrf in #277
- SMCONV fix by @DigiDwrf in #278
- Music inside HiROM mapped rom example and mouse support bug fixes by @DigiDwrf in #280
- Input fixes and VBlank ISR rewrite by @undisbeliever in #282
- Develop by @alekmaul in #283
- chore(*): fix wla version to 10.6 by @alekmaul in #284
- Develop by @alekmaul in #285
New Contributors
- @DigiDwrf made their first contribution in #273
- @undisbeliever made their first contribution in #282
Full Changelog: 4.2.0...4.3.0
Breaking Changes (tks undisbeliever for the log)
Interrupts:
- The VBlank ISR now detects lag frames.
- Code that uses
WaitForVBlank()
should be unaffected - Code that uses
wai
to pause execution will be treated as a lag-frame.
Seeinterrupt.h
documentation for more details. - CAUTION:
nmi_handler
is called on every VBlank interrupt (ie, no lag-frame detection).
- Code that uses
- The VBlank ISR will automatically transfer
oamMemory
to the PPU OAM on non lag-frames.nmi_handler
's that contain a DMA transfer to OAM should remove it.
nmiSet()
is now a function.nmiSet()
will disable IRQ interrupts, enable VBlank interrupts and enable Joypad Auto-Read.
tcc__registers_irq
has been renamed totcc__registers_nmi_isr
(it is not used by IRQ interrupts).
Inputs:
- The VBlank ISR will automatically read inputs on non-lag frames.
- Code that loops until a button is pressed must call
WaitForVBlank()
within the loop otherwise it will loop forever (See commit d450096). - The lag-frame detection will prevent the input variables from suddenly changing in the middle of the mainloop.
- The lag-frame detection will reduce dropped
keysUp()
andkeyDown()
events during lag-frames.
- Code that loops until a button is pressed must call
- Removed
scanPads()
,scanMPlay5()
,mouseRead()
,scanScope()
scanPads()
andscanMPlay5()
has been inlined into the VBlank ISR.mouseRead()
andscanScope()
is now private and automatically called by the VBlank ISR.
- Renamed
pad_keysrepeat
topad_keysdown
to better describe what it holds. padsDown()
,padsUp()
andpadsClear()
argument has changed to matchpadsCurrent()
.padsDown(0)
is unaffected.padsDown(1)
now returns the down keys of the 2nd controller.
padsDown()
is now a macro.
Changes
Interrupts:
- Rewrote the VBlank Interrupt Service Routine
- Please see the VBlank-ISR section of
interrupt.h
documentation for more details.
- Please see the VBlank-ISR section of
- Moved the VBlank ISR, VBlank variables and input reading code to a new
vblank.asm
file. - Added lag-frame detection to the VBlank ISR
WaitForVBlank()
is used to detect lag frames. A lag-frame is when a VBlank Interrupt occurs and the S-CPU is not inWaitForVBlank()
.nmi_handler
's can test for lag-frames using thevblank_flag
variable.
SeemyconsoleVblank()
in the Mode1ContinuosScroll example.
- Added a lag-frame counter:
lag_frame_counter
- Fixed a potential crash a VBlank Interrupt occurs in the middle of
nmiSet()
- Forced tcc imaginary registers to address 0
.RAMSECTION
s that would have movedtcc__registers
out of address 0 now cause a wla-dx linker error.
- VBlank ISR imaginary registers are now page-aligned to prevent a
D.l != 0
direct-page cycle penalty.
Inputs:
- Inputs are now read at the end of the VBlank ISR (to free VBlank time that can be used by the
nmi_handler
) - Fixed
scanPads()
andscanMPlay5()
erroneously readingREG_RDIO
. - Fixed high byte of
pad_keys
not cleared if input is not a standard controller. - Fixed
scanMPlay5()
not reading controllers 2 & 3 (3a3db70).- CAUTION: REG_WRIO ($4201) must not be written to while MultiPlayer5 is active.
- Multiplayer5 reading code clears
pad_keys
if the input is not a standard controller. - Fixed
padsClear()
not clearing the high-byte ofpad_keys*
variables. - Rewrote
padsClear()
andpadsUp()
- Fixed
pad_key*
array size ininput.h
4.2.0
What's Changed
- Tiled: Fix tmx2snes version check and update tmj files by @kobenairb in #238
- Fix the issue #239 by @kobenairb in #240
- feat: The Capcom logo animation screen for Capcom games by @malayli in #243
- Fix buffer overflow who could lead to undefined behavior by @kobenairb in #244
- Add feature: issue #203 by @kobenairb in #245
- fix: fix comment in bgSetScroll for REG_BGyHOFS by @malayli in #246
- chore: fix a typo for HDMA in dma.h by @malayli in #249
- chore: add registers to comments of setColorEffect() function by @malayli in #248
- feat: The Konami logo animation screen for Konami games by @malayli in #250
- feat: create a transparent window on BG2 by @malayli in #252
- chore: remove useless comment in Konami Logo's README file by @malayli in #253
- add sram save and load with offset by @nub1604 in #254
- feat: color math fadeout for Capcom Logo by @malayli in #256
- Fix: mask out tile number on flipped tiles by @nub1604 in #258
- improve: rename logo roms name by @malayli in #260
- Develop by @alekmaul in #267
- Develop by @alekmaul in #268
- chore(*): change to last version by @alekmaul in #269
New Contributors
Full Changelog: 4.1.0...4.2.0
4.1.0
What's Changed
- Fix of the background problem in the ObjectSize example by @Dienben in #176
- Mesen 2 has superceded Mesen-S by @jeffythedragonslayer in #182
- New 816 opt by @kobenairb in #184
- Optimize Makefile for pvsneslib by @kobenairb in #187
- Optimize and simplify Makefile for tools/ by @kobenairb in #186
- Remove warnings message during snesbrr compilation by @kobenairb in #185
- Optimize Makefile to build tcc and wla-dx by @kobenairb in #188
- constify: Remove extra new line when version is printed, optimize Makefile as well by @kobenairb in #189
- 816-opt: Refactor Makefile by @kobenairb in #194
- bin2txt: Remove extra new line when version is printed, optimize Makefile as well by @kobenairb in #193
- Makefile gfx2snes by @kobenairb in #195
- Makefile snestools by @kobenairb in #196
- Optimize Makefile by @kobenairb in #197
- Optimize tmx2sne makefile by @kobenairb in #198
- Fix doxygen prerequesite, we only need it to build release by @kobenairb in #199
- New tcc, full 64 bits, work and tested on Windows, Linux and MacOS by @kobenairb in #200
- Switch tcc to f137615 by @kobenairb in #201
- Apply changes from upgrade branch to develop by @RetroAntho in #202
- New features by @kobenairb in #204
- Fix Alek's issue by @kobenairb in #205
- Fix to compilation issues on Windows, linux and Macos (dyn vs stat libs) by @kobenairb in #207
- Develop by @kobenairb in #208
- Add the missing file after the rollback of sztmpnam by @kobenairb in #209
- Develop by @kobenairb in #210
- Rollback to ucrt64, activate -j options to compile the compilers fast… by @kobenairb in #212
- Develop by @kobenairb in #214
- Develop by @kobenairb in #216
- Develop by @kobenairb in #217
- Update tcc version, update the Makefile for compilers by @kobenairb in #218
- Adding FreeBSD to operating system list by @darkain in #229
- Fix issue #224 by @daniel-starke in #225
- Remove useless directory by @kobenairb in #231
- feat: The "Made with PVSnesLib" logo screen for PVSnesLib games by @malayli in #232
- improve: use framesCounter instead of logoTimer that has same role by @malayli in #233
- Fixed typos by @polluks in #236
- Merge Develop to master for 4.1.0 release by @alekmaul in #237
New Contributors
- @Dienben made their first contribution in #176
- @darkain made their first contribution in #229
- @daniel-starke made their first contribution in #225
- @polluks made their first contribution in #236
Full Changelog: 4.0.2...4.1.0