forked from Lameguy64/PSn00bSDK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchangelog.txt
605 lines (363 loc) · 20.4 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
PSn00bSDK changelog
Items that are lower in the log are more recently implemented.
11-19-2021 by spicyjpeg:
* libc: Removed STACK_MAX_SIZE and added _mem_init() back. RAM and stack size
can now be set by calling _mem_init() manually before allocating any memory.
* libc: sprintf() now supports fixed padding when using %@ (binary integer).
* psxapi: Added wrapper around BIOS function GetSystemInfo().
* examples: Added pads example. Also added CMake build script to cartrom, which
is now built alongside all other examples.
* Deprecated malloc.h and removed all references to it (stdlib.h should be used
instead). Moved int*_t and uint*_t types to stdint.h.
* Fixed file permission errors when attempting to install the SDK on macOS.
Made some small updates to INSTALL.md.
10-31-2021 by spicyjpeg:
* Added tinyxml2 and mkpsxiso as git submodules and removed the (admittedly
short-lived) SKIP_* options completely. CMake's ExternalProject is no longer
used to download dependencies at build time.
* Added CMake presets file with presets for building installer packages.
10-25-2021 by Lameguy64:
* Made a very tiny change in the readme file.
* Included some of the indev directory from the SVN repository.
10-17-2021 by spicyjpeg:
* Added SKIP_TINYXML2 and SKIP_MKPSXISO build options in place of the old
SKIP_DOWNLOAD option, and a new BUNDLE_TOOLCHAIN option for building packages.
Updated INSTALL.md accordingly and fixed git branch error when downloading
mkpsxiso during build.
* Rewritten toolchain.txt (which is now TOOLCHAIN.md) and added proper Windows
toolchain build instructions.
* Added safety checks in CMake scripts to ensure elf2x/mkpsxiso are installed
before attempting to build an executable or CD image.
* examples: Added CMake build script to (and removed makefile from) vagsample.
10-06-2021 by Lameguy64:
* psxspu: Fixed register typo in SpyKeyOn causing unpredictable instability.
* psxspu: Fixed bug where SpuKeyOn does not set the key-on bits for voices 16 to 23.
* examples: Added vagsample SPU example.
09-27-2021 by spicyjpeg:
* liblzp, tools: Fixed tools not building on MSVC and cleaned up LZP API
declarations (replaced meaningless void* pointers with proper types).
* libpsn00b: Added missing PSN00BSDK_VERSION CMake variable.
* examples: Fixed childexec (parent.exe) example crashing due to the child
executable not being relocated in the new build script. Patched n00bdemo to
suppress liblzp pointer type warnings.
* Fixed another MSVC linker error when building tinyxml2 automatically, as well
as various toolchain/compiler test errors sometimes thrown by CMake. Updated
INSTALL.md with more details.
09-13-2021 by spicyjpeg:
* Migrated libpsn00b, tools, examples and template to CMake, added a top-level
CMakeLists.txt and the libpsn00b/cmake directory for CMake setup scripts, got
rid of the old makefiles and installation method.
* Updated docs to match the new build system, moved installation instructions
to INSTALL.md and added doc/cmake_reference.md describing the SDK's CMake
API and variables.
* mkpsxiso: Added rules to automatically download, build and install mkpsxiso
(as well as its dependencies) as part of the SDK.
* cpack: Added initial CPack support and created the cpack directory containing
branding assets for installers built through CPack. A shell script is
provided to regenerate the assets from their source SVGs.
* liblzp: Copied library headers to libpsn00b/include/lzp.
* psxetc: Fixed a random typo in a javadoc comment (those should be eventually
rewritten into proper documentation anyway).
* Added CMake, VS Code and DLL related entries to .gitignore.
08-16-2021 by spicyjpeg:
* psxetc: Added dynamic linking APIs (dl*, DL_*), implemented in dl.c and
_dl_resolve_wrapper.s. The APIs can be accessed by including dlfcn.h, while
another header (elf.h) provides structs and enums to help with manual parsing
of library headers.
* libc: Removed _mem_init.s, improved heap initialization code. Added support
for setting how much RAM to use for the stack (by defining STACK_MAX_SIZE)
and for overriding/replacing the default memory allocator.
* psxapi: Added wrapper around BIOS function FlushCache().
* psxspu: Fixed wrong bounds check in SpuSetTransferStartAddr().
* examples: Added an example showing how to compile dynamically-loaded
libraries (DLLs) and load them at runtime using the new dynamic linker.
* libpsn00b: Added libpsn00b/ldscripts directory and linker scripts for both
executables and DLLs. Also fixed several broken header files (psxgpu.h not
including sys/types.h, missing scanf() declarations, ...).
* Rewritten most makefiles (both for libraries and examples) and centralized
all compiler flags into a single psn00bsdk-setup.mk file for consistency and
easier editing. Added flags to build libpsn00b without gp-relative addressing
for compatibility with the dynamic linker. Also added nm commands to generate
symbol maps required by the linker.
07-01-2021 by Lameguy64:
* Libpsn00b: Added int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t,
uint32_t and uint64_t variable types in sys/types.h.
* psxgte: Replaced unsigned int variable types with u_long to further
improve compatibility with code written for the official Sony SDK and
to make my tutorial examples easier to compile on PSn00bSDK. Example
programs have been updated to account for this change.
* psxcd: Changed type of 2nd argument of CdRead() from u_int to u_long,
as well as changing the type of the size element in CdlFILE from u_int
to u_long.
02-17-2021 by Lameguy64:
* Improved build instructions in readme file and fixed some typos.
* Improved toolchain.txt instructions.
* tools: Added experimental elf2cpe converter for executing PSn00bSDK
programs in official development units. No debug symbols however.
* Fixed prefixes to allow SDK libraries and examples to be built
with mipsel-none-elf.
* examples: Fixed typo in plasma_tbl.h causing multiple definitions when
compiling with newer versions of GCC in n00bdemo.
* examples: cartrom example now marked as obsoleted, but still kept for
reference purposes.
* Includes alextrevisan's GTE macros in inline_c.h.
* Added makefile template.
01-05-2021 by Lameguy64:
* psxgpu: Added struct names to many primitives.
* psxgte: Defined SquareRoot0() and SquareRoot12().
* psxgte: Added gte_lddp() C macro.
* examples: Added C++ demo.
* Updated readme a bit.
11-29-2020 by Lameguy64:
* libpsn00b: Defined MDEC hardware and related DMA registers in hwregs_a.h file.
* psxgte: Fixed entry typo in table of squareroot.s (pointed out by SoapyMan).
* libc: memmove updated to account for forward-looped memory move (by ckosmic).
* examples: Removed redundant toolchain executable definitions in the makefiles.
* examples: Included HDTV example for Github repo.
09-19-2020 by Lameguy64:
* Revised makefiles for building the libraries and examples in a way to make
building with different toolchain versions easier with the PSN00BSDK_TC
environment variable. Library installation and linking is also made easier
with the PSN00BSDK_LIBS environment variable. See readme in the libpsn00b
directory for details.
* examples: Fixed libgcc not found error when compiling some of the examples.
* libc: Added strtok().
* libc: Added support for command line arguments. Pass arguments via
SYSTEM.CNF BOOT= string or a string array with Exec(). Arguments can
be read via argc/argv[] in main() or __argc/__argv anywhere else.
* libc: Added SetHeapSize().
* psxgpu: Moved ISR and callback subsystem to psxetc. You'll have to link
psxetc after psxgpu and psxapi after psxetc in your library string.
* psxetc: Moved debug font functions (FntInit(), FntOpen(), etc) to psxgpu.
* psxetc: Fixed stack management in RestartCallback().
* examples: Added argument passing in childexec example.
* psxcd: Fixed crashing on PSIO and possibly some emulators by implementing
a response buffer read limiter.
* psxgpu: Interrupts are now disabled before setting up ISR and callbacks
in ResetGraph(), as LoadExec() still has interrupts enabled when jumping
to the loaded PS-EXE's entrypoint. Fixes programs made with PSn00bSDK
crashing at ResetGraph() on PSIO when loading from the Menu System and
possibly some emulators.
07-25-2020 by Lameguy64:
* psxgte: Added ScaleMatrixL().
* doc: Corrected documentation for CdReadSync() function.
* psxcd: Added new define: CdlIsoLidOpen.
* psxcd: Updated media change detection logic, media change is checked
by lid open status bit in all CD-ROM file functions. CdControl() calls will
also trigger the media change status on lid open.
* psxcd: Fixed bug in CdGetVolumeLabel() where it constantly reparses the file
system regardless of media change status.
* examples: Updated cdrom/cdbrowse example slightly.
* psxcd: Added CdLoadSession().
* psxcd: Fixed bug where CdReadDir() locks up in an infinite loop when it
encounters a NULL directory record, and the parser has not yet exceeded the
length of the directory record.
* doc: Replaced library version numbers with SVN revision numbers in the
introduced fields.
* doc: Started work on CD-ROM library overview.
04-24-2020 by Lameguy64:
* Refined toolchain instructions a bit.
* psxcd: Added automatic read retry for CdRead() operations, as long as
CdReadSync() is called until read completion.
* psxapi: Added BIOS atoi() and atol() calls. Temporary, may be replaced with
a faster implementation
* psxsio: Added ioctl() support for FIOCSCAN to probe for pending input in
serial tty driver.
* examples: Reorganized examples, added new tty and console examples.
03-11-2020 by Lameguy64:
* psxcd: Fixed CdInit() syntax (there should be no arguments).
* psxcd: Fixed CdlFILE, loc variable renamed to pos.
* documentation: Improved and updated toolchain instructions a bit.
02-28-2020 by Lameguy64:
* documentation: Added docs for CdOpenDir(), CdReadDir() and CdCloseDir().
* psxgpu: Added GetODE().
* psxspu: Fixed SpuKeyOn() bug where only 16 of the 24 channels can be
activated, due to channel bits being written as a 16-bit word.
* psxcd: Added CdOpenDir(), CdReadDir() and CdCloseDir() for parsing directories.
* psxcd: Issuing CdlNop (GetStat) commands now triggers the media change flag
internal to the libraries when CD lid is opened, so file system functions can
update the cached ISO descriptor when the disc has been changed.
* psxcd: Made internal variables and functions for iso9660 parsing static.
02-25-2020 by thp:
* libc: Added abs and labs() functions.
01-06-2020 by Lameguy64:
* libpsn00b: Renamed libpsxcd directory to psxcd to match with other libraries.
* examples: Added obligatory hello world example.
* documentation: Added CD-ROM library documentation.
11-22-2019 by Lameguy64:
* psxapi: Added root counter or timer functions and related definitions.
* examples: Added timer example.
* psxgpu: Added DR_AREA, DR_OFFSET and DR_TWIN primitives and accompanying
setDrawArea(), setDrawOffset() and setTexWindow() macros.
* psxgpu: Added parenthesis to argument value in setlen(), setaddr() and
setcode() macros, preventing addPrims() from being used in a more
sensible manner (ie. addPrims(ot, sub_ot+3, sub_ot)).
* examples: Added render2tex render to texture example.
* psxspu: Fixed typo in spuinit.s on section specifier specifying a data
section instead of text section, resulting to jump to
non-instruction-aligned linker errors.
* psxgpu: Increased ISR stack size to 2048 bytes.
* psxsio: Added kbhit() to poll keyboard input asynchronously and stdin
is now buffered with an IRQ handler.
* psxapi: Added AddDummyTty() (for psxsio DelSIO() fix).
* psxsio: DelSIO() now calls AddDummyTty().
* libc: Fixed bug in strncpy() not placing a NULL byte at end of string.
* libc: Fixed strchr() and strrchr() declarations commented out in string.h.
* libpsn00b: Added the long awaited libpsxcd library with cdxa example.
Documentation will come soon but existing libcd docs should be good
enough for awhile.
* psxgpu: Fixed non functioning GPU DMA wait in DrawSync().
* LibPSn00b run-time library is now officially 0.15b.
10-11-2019 by Lameguy64:
* psxetc: Added FntOpen(), FntPrint() and FntFlush() functions.
* psxgpu: Fixed typo in termPrim() macro (value too long).
* examples: Added billboarding sprites example.
* psxapi: Transferred putchar() BIOS function to libc.
* libpsn00b: Updated makefiles adding -fdata-sections and -ffunction-sections
so unused functions will be stripped out, which yields smaller executables.
* libc: Fixed negative integers not displaying properly in vsprintf()/vsnprintf().
* libc: Fixed zero padding not working in vsprintf()/vsnprintf().
* fpscam: Added debug text using FntOpen(), FntPrint() and FntFlush(). Also added
_boot() call for returning to CD based serial loaders.
09-23-2019 by Lameguy64:
* libc: Added strcat() function.
* Included PSn00bSDK logo vector.
* psxgte: Added gte_stsz() macro.
* psxgpu: Fixed typos in setUVWH() macro.
* Added _boot() BIOS function (A(A0h) aka Warmboot, useful for CD based
serial loaders).
08-17-2019 by Lameguy64:
* LibPSn00b run-time library is officially version 0.13b.
* examples: updated balls and n00bdemo examples for the setDrawTPage()
correction.
* psxgpu: Fixed error on setDrawTPage() syntax and removed setDrawTPageVal()
macro (not needed).
* psxapi: Added event handler definitions related to memory cards.
* psxapi: Added BIOS memory card functions.
* examples: Added childexec example demonstrating a parent executable
transferring execution to a child executable and back.
* elf2x: s_addr no longer set on PS-EXE header, console BIOS already sets it
by STACK value in SYSTEM.CNF and allows child executables to return to
parent if left zero.
* psxapi: Renamed _InitPad(), _StartPad() and _StopPad() to InitPAD(),
StartPAD() and StopPAD() respectively. Fpscam example updated to new
syntax.
07-18-2019 by Lameguy64:
* Added fpscam example.
* Gave examples small descriptions.
* Updated readme a little.
07-17-2019 by Lameguy64:
* LibPSn00b run-time library is officially version 0.12b.
* libc: Added basic C++ support (many thanks to ijacquez).
* libc: Updated start function that should make it possible for a child
executable to return to a parent executable, return logic automatically
calls EnterCriticalSection().
* libc: Updated build method which takes libgcc from the compiler and adds
its own object files into it, eliminating linker problems caused by having
to order libc and libgcc libraries in a specific manner.
* psxgpu: Added RestartCallback().
* psxgpu: Added StoreImage() function.
* psxgpu: Fixed bugged setRECT() macro.
* libc: Added assert.h.
* examples: Balls example now has 166% more balls.
* psxgpu: Increased ISR stack size to 1024 bytes so printf can be used in
callbacks safely.
* libc: Removed int64 (long long) printing in vsprintf() for better
performance, as the R3000 does not support 64-bit arithmetic natively
so its emulated like floats. int64 still used for processing floats and
doubles and old vsprintf.c file is still included for those who really
want int64 support for whatever reason.
* libc: Removed stdarg.h which is part of GCC and not license compatible
with MPL. The toolchain compiled with libgcc provides stdarg.h and other
standard headers.
* examples: Updated sdk-common.mk variable convention for better flexibility.
* libpsn00b: Added common.mk file containing global values for all libraries.
* Updated library and toolchain build instructions.
* psxgpu: Fixed bug in DMACallback where the internal DMA handler would fail
to install due to GetInterruptCallback() retrieving the callback value
immediately in the branch delay slot of a jr instruction, which resuls to
an inconsistent return value. This also broke DrawSyncCallback().
* psxsio: Done fixes on _sio_control() from the aformentioned issues with load
instructions in delay slots.
* psxgte: Added DVECTOR struct.
* psxgpu: Added setLineF2(), setLineG2(), setLineF3() and setLineG3()
primitive macros.
* Added more functions in documentation.
07-01-2019 by williamblair:
* Fixed FntLoad() Y coordinate not working properly for debug font (due to
Y coordinate not being specified for the getTPage() macro.
06-23-2019 by Lameguy64:
* LibPSn00b Run-time Library is officially version 0.10b.
* Reworked readme file with improved build instructions.
* libpsn00b: Added missing C extern groups for C++ compatibility in
psxapi.h, stdlib.h and string.h.
* libpsn00b: Removed changelogs in the readmes of each libpsn00b library
as its much easier to keep track of changes in a single changelog than
scattering them across multiple changelogs.
* psxapi: Added Exec() function and EXEC struct.
* psxgpu: Added DrawPrim() function (uses direct I/O).
* psxgpu: VSync() function completely overhauled. Logic is now based on
Sony's code but more efficient and can return total number of vblanks
elapsed, number of hblanks since last call and wait up to n vblanks
specified by an appropriate argument value. It will also generate a
timeout when vblank interrupt stops working and would attempt to
restart it.
* psxapi: Added gets() and getc() BIOS functions.
* psxapi: Corrected a putc()/putchar() discrepancy. putc() puts a character
to a file stream, putchar() puts a character to stdout.
* Completely revised library reference manual with better formatting and
more functions documented.
* psxgpu: Added DrawSyncCallback().
* psxgpu: Implemented DMA interrupt callback system with DMACallback()
allowing to handle DMA interrupts very easily.
* libpsn00b: Implemented Serial I/O library (psxsio) with serial tty device
(installed using AddSIO) and serial callback support. Serial library
is also fully documented.
* psxgpu: Implemented IRQ callback system with InterruptCallback() allowing
to set interrupt callbacks very easily.
* psxgpu: Implemented proper IRQ handler installed using HookEntryInt or
SetCustomExitFromException() for handling VSync and other interrupts.
ChangeClearPAD(0) must now be called after _InitPad() or vsync timeout
will occur.
* libpsn00b: Started making local labels prefixed with .L instead of . making
them not appear in symbol lists resulting in a cleaner symbol dump. Still
not possible to do function-scope local labels like in ASMPSX because GAS
syntax is ASS (or ASS GAS which is farts, GAS is farts).
* psxgpu: DrawSync() function now waits for DMA completion and GPU transfer
ready instead of simply waiting for GPU transfer ready which is the likely
cause of subtle GPU related timing issues, it also sets GPU DMA transfer
mode to off afterwards. It can also read number of words remaining in DMA
transfer if a0 is non-zero but it likely only returns the correct value on
VRAM transfers. Exact way how DrawSync() returns the count in the official
SDK is currently unknown.
06-07-2019 by qbradq:
* lzpack: Swapped a buffer length litteral with sizeof operator, fixing a
stack overflow bug in some instances.
05-23-2019 by Lameguy64:
* Added dev notes.txt file in docs that includes notes about the many
quirks about the console discovered during the development of this
SDK project.
* Updated libn00bref.odf a little.
* Added turboboot example.
* Added rgb24 example.
* Got custom exit handler set using SetCustomExitFromException() (BIOS
function B(19h)) working. Currently used to acknowledge VSync IRQ but
actual VSync handling is still done with events and needs to be
transferred to the custom exit handler. At least it lets BIOS
controller functions to work now. See doc/dev notes.txt for details
on how this handler behaves.
* Made stack usage in ResetGraph() less wasteful. You only need to
allocate N words on stack based on N arguments of the function
being called.
* VSync IRQ handling now done using a custom exit from exception handler.
Actual VSync handling is yet to be moved to the custom exit handler
though.
* Made stack usage in start.s of libc a lot less wasteful.
* Implemented controller support via BIOS functions (use _InitPad(),
_StartPad() and _StopPad()). BIOS memory card functions may also
work as well but its not tested yet.
* Removed duplicate initpad.s and initcard.s functions in psxapi.
* Added _InitCd() function to psxapi which is a safer version of _96_init()
as it preserves other DMA channel settings. Use BIOS file functions such
as open(), read() and close() with path names starting with cdrom:/ to
access files from CD after calling _InitCd().