forked from Stephane-D/SGDK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchangelog.txt
704 lines (617 loc) · 29.1 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
SGDK 1.41 (September 2019)
--------------------------
COMPILER
* RESCOMP
- added new sprite optimization options to SPRITE resource (see rescomp.txt for details)
- minor tweak on binary export order (can save some bytes with LZ4W compression)
- fixed resource duplication bug
* XGMTOOL
- fixed VGM loop
LIBRARY
* SYS
- Safer SYS_setInterruptMaskLevel() so interrupt mask is not lost after SYS_enablesInts() call
- fixed/updated SGDK logo display code
- renamed getFPS() / getFPS_f() to SYS_getFPS() / SYS_getFPSAsFloat()
* DMA
- fixed possible DMA failure on some Megadrive when Z80 access 68K BUS at same time we trigger DMA
- minor fix on autoInc restoration after DMA_flushQueue()
* VDP
- tweaked default VRAM configuration so window can be freely used anywhere.
- added VDP_getAdjustedVCounter() method to have a consistent [0..255] V-Counter (avoiding rollback issue)
- tweaked up VDP_resetScreen() method
- added VDP_setHVLatching() and VDP_setDMAEnabled() methods
* PALETTE
- fixed VDP_getPaletteColors() and VDP_getPalette(..) methods (regression)
- fixed a bug with all palette fading methods (regression)
- renamed vdp_pal unit to pal unit (so all palette methods are now called PAL_xxx)
* JOY
- added JOY_reset() method to reset controller detection without clearing JOY state change event callback
- safer JOY_setSupport(..) / gun controller implementation
- more permissive mouse id detection in mouse pooling code
- fixed an issue where an EA 4-way multitap could be incorrectly detected
* TIMER
- safer waitSubTick(..) implementation during VInt.
- fixed getSubTick() method to take care of HV counter latching when light guns are used.
* RESOURCE
- added 2 alternate SGDK logo (free feel to use it)
- minor change on library resources name
- fixed version and added alias for old resource names
* added ENABLE_NEWLIB define in config.h file for those who want to use newlib within SGDK (you need to build it by yourself)
* changed 'u16' to 'bool' where it makes sense to use 'bool' (internally they are the same type, it's just for readability).
* minors tweaks, changes and fixes here and there
SAMPLE
* XGMPlayer
- updated to make it work with last SGDK (sprite engine difference mainly)
* SOUND
- reintroduced cry SFX test for XGM driver
SGDK 1.4 (May 2019)
-------------------
COMPILER
* RESCOMP
- rewrote from scratch in java for easier evolution and easy multi OS support.
- added smart sprite cutting (detect empty space in sprite)
- many changes on SPRITE resource, don't forget to read the rescomp.txt file to see changes about this resource.
- can now disable map optimization for IMAGE resources (see rescomp.txt for more information)
* LZ4W
- added code sources (java)
- fixed compression using previous data block in ROM (updated packer to version 1.4)
* BINTOS
- fixed a stupid bug on path.
* added XGM ROM builder tool sources.
* removed RESCOMP (C version), WAVTORAW, TFMCOM and Z80DASM tools.
* added Visual Studio template.
LIBRARY
* SYS
- added SYS_setVIntAligned(..) method to force V-Int callback to align process on VBlank.
IMPORTANT: by default now SGDK *does* align the V-Int processing to VBlank so you need to disable it if you don't want it !
- added SYS_getCPULoad() to return CPU load estimation.
- added SYS_resetMissedFrames() / SYS_getMissedFrames() methods.
* DMA
- simplified DMA over capacity strategy
- minor change in debug log message
* SPRITE
- renamed SPR_init(..) to SPR_initEx(..) so now SPR_init() doesn't require any parameters by default.
- removed 'maxSprite' parameter from Sprite Engine initialization (alays use max available).
- added delayed frame update support.
- added SPR_FLAG_DISABLE_DELAYED_FRAME_UPDATE flag to disable the delayed frame update (when we are running out of DMA capacity).
- added SPR_setDelayedFrameUpdate() to change the delayed frame update state for a sprite.
- added SPR_FLAG_INSERT_HEAD flag to allow adding new sprite in first position (instead of last position by default)
- added SPR_defragVRAM() method to force VRAM defragmentation
- added SPR_addSpriteSafe(..) and SPR_addSpriteExSafe(..) methods (automatically do VRAM defrag if needed)
- fixed a bug where the last VDP sprite attribute weren't always correctly updated with visibility set to AUTO_SLOW.
- fixed a bug a sprite couldn't be allocated.
- fixed sprite visibility state when the number of used sprite changed.
- many changes to sprite structures (better handling of flip info, better ROM usage...)
* VDP
- added VDP_showCPULoad() method to display CPU load
- added VDP_waitVInt() method to wait until next VInt to happen.
- removed 'waitvsync' parameter for VDP_initFading(..) and VDP_doStepFading(..) methods (we always want VSync here)
- simplified / tweaked macros for VDP control writes
* VRAM
- added VRAM_getAllocated(..) and VRAM_getLargestFreeBlock(..) methods
* TYPE
- added bool type
- replaced u16 by bool where it needs to be
* MATHS
- updated fix32Mul() and fix32Div() definition (again, trying to find the best compromize)
- added new missing structures as Vect2D_f32, Mat2D_f32, Vect3D_xx...
- added f16 and f32 as shorcut of fix16 and fix32 types.
- added short typedefs (V2u16 = Vect2D_u16, V2f32 = Vect2D_f32, M2f16 = Mat2D_f16, M3f32 = Mat3D_f32)
* PALETTE
- removed index field from Palette structure
* JOY
- added checking for mouse / multipad read operation to avoid timeout operation when mouse or multipad is not present.
* Z80
- added volatile access for safety
* TIMER
- improved waitMs(..) method to be more accurate on small wait.
- tweaked getSubTick() method (need testing, possible regression)
* STRING
- fixed and optimized uintToStr() method
* TOOL
- memory allocation methods for unpacking now always use deep allocation regardless of the compression used (simpler and less bug prone)
- fixed LZ4W decompression using previous data block
* fixed variable initialization (last byte was not always properly initialized)
* added HALT_Z80_ON_IO define (config.h) to force Z80 halt on IO port access.
* new awesome SGDK logo (Thanks a tons to Lizardrive for making it !)
* removed useless sound drivers (MVS, TFM and VGM)
* removed old TILE_CACHE unit (replaced by VRAM unit)
* removed useless zlib
* many refactoring (sorry for that, you will need to update your old code)
* many tweaks / cleanup
SAMPLE
* updated all samples to take care of last changes made in SGDK
* BENCHMARK
- tweaked big sprite test to disable the delayed sprite update (new sprite engine feature)
- fixed sheet size (new rescomp don't allow it)
SGDK 1.34 (January 2018)
------------------------
LIBRARY
* DMA
- added DMA queue support for all (or almost all) methods supporting DMA operation
* SPRITE
- fixed timing issue when changing FRAME or ANIMATION manually.
- fixed sprite sorting when multiple depth were modified in a single SPR_update(..).
- safer sprite allocation / release.
* MEMORY
- added MEM_getLargestFreeBlock() to get the largest available block of memory.
* improved LZ4W compression (better compression rate, faster compression...)
* minors changes on method updating tilemap through X,Y position (safer)
* some cleanup
SAMPLE
* reworked benchmark sample to avoid out of memory error (^^)
SGDK 1.33 (November 2017)
-------------------------
LIBRARY
* DMA
- added HALT_Z80_ON_DMA flag in config.h to enable Z80 halt on DMA (avoid corruptions or sound issues on Tectoy MD).
- deprecated 'vdp_dma' unit now forward calls to 'dma' unit.
- added wait DMA checking (DMA fill or DMA copy operation) before doing a DMA operation.
* SPRITE
- simplified sprite sorting (always enabled, just need to use SPR_setDepth(..) method if needed)
- fixed a regression which was causing 1 frame latency in sprite update.
SAMPLE
* minor change to sound sample
SGDK 1.32 (October 2017)
------------------------
COMPILER
* added VS project for easier compilation with Visual Studio (thanks to lab313)
LIBRARY
* TIMER:
- fixed getSubTick() method (no more possible rollback)
- minor fix in getFPS() and getFPS_f() methods
* VDP:
- tweaked default VRAM memory layout
* BITMAP:
- changed get/setPixelXXX(..) methods so they now work on single pixel (not anymore doubled X pixel resolution)
- changed drawLine(..) method so it now work on single pixel (not anymore doubled X pixel resolution).
WARNING: drawLine(..) is not anymore doing clipping, use BMP_clipLine(..) first for that.
- added get/setPixelXXXFast(..) methods for fast get/set pixel operation (no clipping check)
* SOUND:
- fixed auto PCM selection when playing sample with driver 2ADPCM and 4PCM.
- fixed default tempo for PAL system with XGM driver
* SPRITE:
WARNING: you now require to set the sprite depth to use depth sorting (not anymore using the sprite Y position).
- replaced SPR_FLAG_AUTO_YSORTING by SPR_FLAG_AUTO_DEPTH_SORTING
- replaced SPR_setYSorting(..) method by SPR_setDepthSorting(..) / SPR_setZSorting(..)
- replaced SPR_sortOnYPos() by SPR_sortOnDepth()
- added void SPR_setDepth(..) / SPR_setZ(..) methods to set sprite depth
- fixed VDP_updateSprites() with DMA queue operation (prevent sprite table modifications before DMA occurs).
* STRING:
- added int16ToStr(..) and uint16ToStr(..) methods (faster than intToStr(..) or uintToStr(..) for 16 bit integer, thanks to clbr)
- optimized intToStr(..) and uintToStr(..) methods (thanks to clbr for that)
SAMPLE
* added XGM Player sample :)
* Bench:
- added some pixels / line draw tests
* Donuts:
- updated for new depth sorting refactoring
SGDK 1.31 (July 2017)
---------------------
DOCUMENTATION
* minor fix and updated to last version
COMPILER
* fixed debug build in 'build_lib' batch
LIBRARY
* JOY:
- fixed joy state variables declaration to avoid issues when GCC -O3 optimization level is used.
* SPRITE:
- added ALWAYS_ON_TOP flag to keep a sprite above others sprites whatever is sorting order.
- minor fix on sprite sort
SGDK 1.3 (June 2017)
--------------------
DOCUMENTATION
* updated to last version
COMPILER
* Updated to GCC 6.3 (thanks a tons to Gligli for that !)
- many bugs fix and new features compared to old GCC 3.4.6
- much better assembly code generation :)
- added LTO (Linker Time Optimization) support
* Modified makefile to enable LTO and improve optimization level.
* Rescomp:
- updated to handle structure changes in the Sprite Engine.
LIBRARY
* DMA:
- minor optimization to DMA_queue(..) method (thanks to HpMan)
* Memory:
- default stack size increased to 0x800 bytes (GCC 6.3 requires more stack memory :p)
* Sprite Engine:
- added automatic Y sorting (per sprite)
- added SPR_sort(..) for generic sorting
- added SPR_sortOnY(..) for generic sorting
- by default now sprite visibility is set to always ON (faster than automatic visibility)
- updated 'Collision' structure (hierarchical structure)
- some changes to internal structures to provide better performance
* VDP BG/Tile:
- fixed a minor bug in VDP_setTileMapDataEx(..) and VDP_setTileMapDataRectEx(..) methods (thanks to Alekmaul for reporting it)
* minors fixes...
SAMPLE
* Bench:
- fixed math tests for GCC 6.3
SGDK 1.22a (September 2016)
---------------------------
LIBRARY
* VDP: reintroduced the 16 plain system tiles.
SGDK 1.22 (September 2016)
--------------------------
DOCUMENTATION
* minors improvements and fixes
COMPILER
* Rescomp: fixed a minor issue in sprite resource
* XGMTool:
- added duration information to XD3 tag
- improved loop
* added the XGM ROM builder tool.
* removed GenRes from makefile
LIBRARY
* Sprite Engine:
- fixed sprite attribut update for non visible sprite
- fixed sprite list update in certain condition
* Sound:
- moved XGM driver method in a specific unit (xgm.c)
- added XGM_getElapsed(..) method to retrieve elapsed XGM music playing time (in number of frame)
- added XGM_setLoopNumber(..) to set the wanted number of loop in XGM music play.
- added interrupt protection for Z80 access
* Maths:
- reverted fix32Mul() and fix32Div() to previous version to avoid cumulative error
- added getApproximatedLog2(..) method for fast Log2 calculation (approximated)
- added getLog2Int(..) method for integer Log2 calculation
* Misc:
- moved QSort methods to tools
- added generic qsort with custom comparator callback
* VDP: more flexible VRAM tilemap configuration (window plan don't have to be first map).
* Bitmap mode: can now set bitmap mode in window plan
* changed to MIT license
* refactoring
SAMPLE
* Bench: added sprite donut animation test.
SGDK 1.21 (May 2016)
--------------------
LIBRARY
* SPRITE: fixed a bug causing corrupted sprite after SPR_release(..) operation
* TOOLS: reintroduced zlib_unpack(..) method (accidentally removed from header)
SAMPLE
* Bench:
- fixed a bug causing address error on real hardware during 'Sprite test'.
- added 2 tests in 'BG test'
SGDK 1.2 (May 2016)
-------------------
DOCUMENTATION
* several update and fixes here and there (some tags were not correctly recognized in later doxygen version).
COMPILER
* Rescomp: updated to version 1.5 (with updated documentation)
- updated SPRITE resource compilation to the new SGDK Sprite structures.
- fixed minor issue on IMAGE resource packing.
- now using constants for sound driver (less confusing, got annoying bug because of that).
- changed header 'define' name generation to avoid conflict between 2 identical named file.
- fixed a bug in tilemap optimization for flipped tiles.
- removed all packers not anymore used in SGDK.
- minor change to XGM resource to support extra parameter
- fixed a minor bug in sprite structure definition
* XGMTool: updated to version 1.64
- major structure changes for faster conversion / optimization operations
- improved VGM to XGM conversion.
- added options to disable some PCM auto processing
- new options available to handle specific case and improve conversion process
- added GD3 tag support.
- better handling of PAL/NTSC timing
- fixed pal information lost during XGC conversion.
- more accurate loop position
- fixed a minor issue in offset calculation.
- fixed VGM loop information export (when using VGM optimization)
* WavToRaw:
- fix 64-bit issues, it is still not endian safe.
- check for read errors.
* Appack: minor fix for silent parameter.
* Added new custom LZ4W packer (require Java to be installed).
* Removed GenRes tool (not anymore used and can confuse with rescomp).
* added GDB tool (not yet really used yet)
* Separated 'debug' and 'release' library build for easier profile switch.
LIBRARY
* BITMAP:
- allow to change the plan used for bitmap rendering
- added buffer preservation option (severe impact on performance)
- fixed minors issues on reset/initialization process
* DMA: added new DMA queue system in 'dma' unit, you can consider 'vdp_dma' unit as deprecated (still provided for backward compatibility).
- we can now limit the max transfer capabilities in a single frame with DMA_setMaxTransferSize(..)
- can now define the DMA queue size with DMA_init(..) method.
- added DMA_setIgnoreOverCapacity(..) to change DMA strategy when reaching max capacity.
* GRAPHIC:
- added news methods for allocation and compression stuff (see TOOLS section)
- added dynamic VRAM allocation ('vram' unit which replace 'tilecache' unit)
* PALETTE:
- fixed RGB24_TO_VDPCOLOR so it does what it says.
- better palette fading using rounding.
- fixed issue using sync fading locking interrupts (can cause XGM music lag).
* MATHS:
- added abs(..) method.
- fixed fix32ToRoundedInt() and fix32Round() defines (added parenthesis around)
- replaced distance_approx(..) by getApproximatedDistance(..)
- changed fix32 div/mul calculation strategy for better value preservation
* MEMORY:
- added MEM_getAllocated() to return current dynamically allocated memory.
- added MEM_dump() to dump in Gend KMod console the memory allocation table
* SOUND:
- renamed Z80_DRIVER_4PCM_ENV --> Z80_DRIVER_4PCM
* SPRITE: complete rewrite of sprite engine !
- many changes including the API.
- should be faster but will be more optimized in future.
* STRING:
- added isdigit(c), strnlen(..) and the very useful sprintf(..) ma
- added strncpy(..) method.
- replaced strreplace(..) --> strreplacechar(..)
- fixed fix32ToStr(..) and fix16ToStr(..) methods
* SYSTEM:
- tried to more more compatible with default GCC stdint.h definitions
- added SYS_setVIntPreCallback(..) so you can have your method called at VInt before any internal SGDK stuff are proceed.
- added SYS_isNTSC() and SYS_isPAL() methods for easy system determination.
- minor fix on SP register initialization (preserve value set in vector table)
- added SYS_hardReset() to force hard reset.
* TOOLS:
- added new LZ4W compression (very fast unpacking but average compression level)
- removed RLE, RLE_MAP and UFTC compression (LZ4W performs better in almost all cases).
- removed UnpackEx(..) method (useless now).
- added setRandomSeed(u16 seed) to initialize randomizer.
* VDP:
- renamed WPLAN / WINDOW / VDP_WINDOW --> VDP_PLAN_WINDOW
- renamed APLAN --> VDP_PLAN_A
- renamed BPLAN --> VDP_PLAN_B
- renamed SLIST / VDP_SPRITE_LIST --> VDP_SPRITE_TABLE
- renamed HSCRL / VDP_SCROLL_H --> VDP_HSCROLL_TABLE
- added planWidth / planHeight to replace VDP_getPlanWidth() / VDP_getPlanHeigth() for faster internal SGDK calculations.
- added windowWidth / windowHeight for faster internal SGDK calculations.
- added VDP_setWindowHPos(..) and VDP_setWindowVPos(..) methods to set window positions.
- fixed a bug with VDP_setBPlanAddress(..) method.
* VDP BG/TILE:
- replaced VDP_PLAN_A / VDP_PLAN_B constants by PLAN_A / PLAN_B in some methods.
- some methods now support PLAN_WINDOW parameter.
- added VDP_clearTextAreaBG(..), VDP_clearTextLineBG(..), VDP_clearTextArea(..) methods.
- modified VDP_drawTextBG(..) method.
- others minors changes.
* VDP SPRITE: major rewrite of 'vdp_sprite' unit (require project modifications) !
- replaced SpriteDef structure by VDPSprite structure (fit better hardware structure).
- added dynamic allocation of hardware sprite:
VDP_allocateSprites(..), VDP_releaseSprites(..), VDP_getAvailableSprites()
- VDP_updateSprites(..) can now use DMA queue.
- many others changes.
* XGM driver:
- better handling of main BUS contention with DMA
- added methods to improve BUS contention when using PSG sound in music.
- fixed PCM play status when PCM is used from XGM music.
- minor fix in driver code for better music frame sync.
- better pause/resume support.
- music sync is now handled on 68000 side for more flexibility (adjustable tempo).
* Z80:
- modified writeYM macros
* memory usage optimizations.
SAMPLE:
* Bench: added new sample for general test and benchmarking.
* Sound:
- minors changes about Z80 load information for XGM driver.
* Sprite:
- added basic enemies (no collision yet)
- added basic SFX
- updated to last SGDK
- some refactoring
SGDK 1.12 (March 2015)
----------------------
COMPILER
* XGMTool:
- minors changes and fixes.
LIBRARY
* SPRITE:
- added VDP_resetSpritesDirect() method.
* SOUND:
- minor fix to XGM driver (PCM in music was wrong in some case).
SGDK 1.11 (December 2014)
-------------------------
* CONTROLLER:
- fixed small issue in joystick code (Chilly Willy).
* SOUND:
- added Z80 CPU load information in XGM driver (experimental).
* Fixed small issue in joystick code (Chilly Willy).
SGDK 1.10 (December 2014)
-------------------------
COMPILER
* XGMTool:
- removed DAC enabled command (automatically handle by the XGM driver).
- added DAC enabled state (XGM driver uses it when no PCM are playing).
- now uses the VGM 1.60 'stream id' information to allow multi PCM channel for XGM conversion.
Note that each channel has its own priority as VGM music does not contains PCM priority information.
LIBRARY
* VDP:
- VDP_fade(..) method now automatically disables interrupts if needed.
* SPRITE:
- minor optimization in the Sprite Engine to quickly discard disabled sprites (visibility forced to off).
* SOUND:
- added automatic DAC enabled control (XGM driver).
- fixed issue with music pause operation on real hardware (XGM driver).
- minor tweak to reduce a bit the size of the Z80 drivers.
- removed Z80_DRIVER_4PCM which is useless (use Z80_DRIVER_4PCM_ENV driver instead).
* CONTROLLER:
- added Sega Phaser support (Chilly Willy).
* SYSTEM:
- disable library debug info.
* SAMPLE:
- updated 'Joy' sample to add Phaser test (Chilly Willy).
- updated 'Sound' sample to remove Z80_DRIVER_4PCM test and add an example of the MVS driver PCM SFX.
SGDK 1.01 (November 2014)
-------------------------
COMPILER
* fixed bugs in XGMTool.
* removed linear interpolation when converting WAV file.
* others minors changes.
SGDK 1.00 (November 2014)
-------------------------
COMPILER
* Rescomp:
- added support to XGM resource in rescomp.
* added xgmtool to convert VGM into XGM and compile XGM file.
* removed Genitile tool sources.
* updated wavtoraw to support sample interpolation.
LIBRARY
* VDP:
- added VDP_setScanMode(u16 mode) method to change the interlaced mode.
- added VDP_interruptFade() method to interrupt async palette fading.
* SPRITE:
- fixed a bug with SPR_init(..) method when using same definition, sometime timer could be not reseted and then animation is not working anymore.
- fixed declaration of VDP_setSprite(..) / VDP_setSpriteDirect(..) / VDP_setSpritePosition(..) methods.
* SOUND:
- Z80 memory is cleared before loading a custom driver.
- added Z80_read(..) and Z80_write(..) methods for simple Z80 RAM read/write operations.
- added XGM driver methods:
u8 SND_isPlaying_XGM();
void SND_startPlay_XGM(const u8 *song);
void SND_stopPlay_XGM();
void SND_resumePlay_XGM();
u8 SND_isPlayingPCM_XGM(const u16 channel_mask);
void SND_setPCM_XGM(const u8 id, const u8 *sample, const u32 len);
void SND_setPCMFast_XGM(const u8 id, const u8 *sample, const u32 len);
void SND_startPlayPCM_XGM(const u8 id, const u8 priority, const u16 channel);
void SND_stopPlayPCM_XGM(const u16 channel);
* MATH:
- minor fix in min/max defines.
* CONTROLLER:
- fixed declaration of JOY_readJoypadX/Y(..) methods (they should return s16 and not u16)
* SYSTEM:
- sega.s and rom_head.c files are now copied into the 'src/boot' project folder so they can easily be customized per project.
* SAMPLE:
- modified sound sample to add XGM driver example.
* some fixes in the doxygen documentation.
* others changes and improvements.
SGDK 0.96d (june 2014)
----------------------
LIBRARY
* removed direct VRam Map data unpacking as it was buggy.
SGDK 0.96c (june 2014)
----------------------
COMPILER
* Rescomp:
- fixed some issues on compression.
- now accept string to define which compression to use (AUTO, APLIB, RLE) in resource definition.
LIBRARY
* minors changes to Doxygen documentation.
SGDK 0.96 (may 2014)
--------------------
COMPILER
* Rescomp:
- improved BMP image support.
- byte data are now output in word format to avoid the GCC bug (compilation with "-g" flag fails when byte data is encountered).
- fixed issue on empty sprite animation detection.
- fixed path separator issue on old windows system.
- fixed compilation issues on unix system.
* Makefile:
- Added "release" and "debug" target to makefile (default is "release").
"debug" target allow you to use GDB interactive debugger through emulator supporting it.
* added appack tool sources code (compatibility for linux system).
* some cleanup in bintos tool (removed the useless sizealign command done by sizebnd tool).
LIBRARY
* VDP:
- fixed palette fading methods where the last frame colors weren't always correct.
- VDP_drawImage(..) and VDP_drawBitmap(..) now use dynamic VRAM tile index so they does not erase anymore the previous drawn image.
'curTileInd' variable which contains the VRAM tile index where next tile will be uploaded is public.
* TILE:
- fixed somes bugs in the tile cache engine.
- removed the MEM_free(..) call from the VInt callback (tile cache engine).
So we don't need anymore to disable interrupts at each memory allocation operation for safety ;)
* SPRITE:
- fixed somes bugs in the sprite engine.
- added SPR_setAlwaysVisible(..) and SPR_setNeverVisible(..) to force (not) visibility on sprite (sprite engine)
* BITMAP:
- minor performance improvement on the BMP_drawPolygon(..) method.
* SOUND:
- fixed YM2612 write methods (can have issue on MD2 system).
* DMA:
- fixed VRam Copy DMA.
* MATH:
- fixed 2D projection calculation in M3D_project_xxx(..) methods.
Now the camera distance is correctly taken in account for the final projection (adding a minor impact on performance).
* SYSTEM:
- fixed soft reset issues.
* TIMER:
- fixed a minor issue with getTime(..) method.
- waitSubTick(..) is now more accurate when called from V-Interrupt code.
* SAMPLE:
- minors changes and improvements on the Sonic Sprite sample.
- minors changes to 3D cube flat sample.
* DEBUG:
- added some KDebug log methods (KLog, KLog_Uxx, KLog_Sxx...)
* added strcmp(..) method.
* others changes and improvements.
SGDK 0.95 (feb 2014)
--------------------
COMPILER
* Major change on resource compilation:
A new resource compiler tool (rescomp) is used to compile all resource files.
It support many type of resources as BMP, PNG, WAV, PCM, VGM, TFM..
Read the rescomp.txt file to have more informations about it and look in the 'sound' and 'sprite' sample example.
You can also convert your old project by using the "rescomp -convert" command on the project folder to convert.
- added appack tool.
- minor fix in wavtoraw tool.
LIBRARY
* added GFX compression support (see tools.h file for doxygen documentation).
* VDP:
- added VDP_getBackgroundColor() and VDP_setBackgroundColor(..) methods.
- added VDP_get/setTextPlan(), VDP_get/setTextPalette() and VDP_get/setTextPriority() methods to change text drawing properties.
- added VDP_drawBitmap(..) and VDP_drawBitmapEx(..) methods to draw Bitmap resource.
- added VDP_drawImage(..) and VDP_drawImageEx(..) methods to draw Image resources.
- added VDP_loadTileSet(..) method to load TileSet resource.
- added VDP_setMap(..) and VDP_setMapEx(..) methods to load Map resources.
- lot of refactoring in the setTileMap methods...
- some tweaks.
* TILE:
- added new tile cache engine for easier tile allocation in VRAM.
See the tile_cache.h file for doxygen documentation.
* SPRITE:
- added sprite engine for easier sprite manipulation.
See the sprite_eng.h file for doxygen documentation and the included "sprite" sample for an example.
* SOUND:
- added TFC_isPlaying() command for the 68k TFM driver.
- fixed issue with consecutive play command on TFM Z80 driver.
- Improved VGM driver (thanks to kubilus1 and sigflup).
You can now pause, resume music and even better play PCM SFX !
- now clear Z80 memory on driver loading to avoid any problems with var initialization.
* DMA:
- minor change to VDP_doDMAEx(..) method, be careful if you use this method, the last parameter changed.
* JOY:
- added JOY_waitPressTime() and JOY_waitPressBtnTime() methods.
- JOY_waitPressBtn() and JOY_waitPress() now return button pressed info.
* MEMORY:
- fixed a minor buf with dynamic memory allocation.
* SYSTEM:
- added SYS_disableInts() and SYS_enableInts() methods.
- added SYS_isInInterrupt() to detect if we are in an interrupt callback.
- added SYS_getAndSetInterruptMaskLevel(..) method to "atomically" get and set interrupt mask level.
- added SYS_die(..) for fatal error handling.
* library font is now included as an image.
* added some logs for easier debugging (KDebug message).
* many others smalls improvements.
* lot of refactoring.
SGDK 0.94 (feb 2013):
---------------------
* Major rewrite of the Bitmap engine:
- Fixed 256x160 resolution.
- Removed all specifics flags as it now always use deferred flip operation with extended blank.
- Simpler and easier to use.
- Better performance (20 FPS in NTSC, 25 FPS in PAL).
- Backface culling now directly handled in the BMP_drawPolygon(..) method.
- Removed useless FF BMP engine (too complex, incomplete..)
- Many others changes you will discover :)
* Added "Bitmap" structure for better bitmap handling.
SGDK automatically convert 16 colors bitmap images to "Bitmap".
* Major rewrite of Maths3D engine:
- Added many 3D related structures (as matrix, transform..).
- More flexibility.
- Improved performance (not much).
* added DMA capability to VDP_setHorizontalScrollxxx(..) / VDP_setVerticalScrollTile(..) functions.
* Added VDP_doDMAEx(..) so we can specify if we modify the VRam step.
* Refactored palette functions.
* Fixed QSort function.
* Removed useless VRAM table (eat rom space for minor speed boost).
* Minors fixes/tweaks in memset and memcpy functions.
* Updated WavToRaw tool (now support any output rate).
* Added Genitile 1.7 sources.
* Minors tweaks on makefile.
* Fixed a minor issue in rom_head (Thanks Chilly Willy).
* Updated demo samples.
* Others minors changes or improvements.