269 lines
18 KiB
Plaintext
269 lines
18 KiB
Plaintext
2019-04-10 (0.6.2):
|
|
- Included GTE library by LameGuy64/Meido-Tek as 'libmeidogte'
|
|
- New example: gtecube. Demonstrates libmeidogte
|
|
- The 'rottest' and 'puzzle' examples always set a PAL video mode regardless of the setting in Makefile.cfg
|
|
Fixed.
|
|
- Removed unused macro code from spasm
|
|
|
|
2018-01-15 (0.6.1) :
|
|
- Fixed bug where LO and HI registers were not saved and restored by the NoBIOS exception handler
|
|
- Some definitions (like the ones for the interrupt controller and the GPU) moved out of
|
|
library source code to public headers, so they are available to all applications that may need them
|
|
- Fixes in pad.c so that compiler optimizations do not generate code with bad behavior
|
|
- Fixed crash when using a GCC 7.x+ compiler when calling static constructors during initialization.
|
|
- Static constructors are now called in backwards order. (as they are on most systems)
|
|
- Fixed bug where the __ctor_list symbol wouldn't have the address of the constructor list,
|
|
but would have its address offset unpredictably (leading to the crash mentioned above).
|
|
- Integrated upstream changes from F3M in libf3m
|
|
- Removed all references to Composer 669 music format in the sources and
|
|
documentation of libmodplay, as support for the format was never
|
|
implemented.
|
|
- Added psxs3m example. Mostly the same as psxmod but using libf3m
|
|
instead of libmodplay
|
|
- Fixed some issues in the psxmod example.
|
|
|
|
2016-06-03 (0.6):
|
|
- size_t and ssize_t definitions moved from stdio.h to types.h, and types.h is included automatically by stdio.h
|
|
- Added strcoll() - as a wrapper to strcmp()
|
|
- File device enum is now public and moved to stdio.h
|
|
It was incorrectly private and in libpsx/src/libc.c before
|
|
- fopen(): path argument is now const char*
|
|
- rename() and remove(): both arguments are now const char*
|
|
- open(): filename argument is now const char*
|
|
- get_real_file_size() and get_file_size(): argument is now const char*
|
|
- firstfile(): name argument is now const char*
|
|
- Added stdin, stdout and stderr FILE structures
|
|
- Implemented fwrite(). Only works with stdout and stderr
|
|
- Implemented fputs(). Only works with stdout and stderr
|
|
- Implemented freopen()
|
|
- Implemented clearerr(), feof(), ferror() and fileno()
|
|
- Implemented placeholders for strerror() and strerror_r()
|
|
- Added libf3m, to playback S3M module files, adapted to PSXSDK from GreaseMonkey's F3M
|
|
- libm/k_rem_pio2.c: fixed misleading indentation at line 188.
|
|
libm/e_asin.c: fixed misleading indentation at line 89.
|
|
libm/w_exp.c: o_threshold and u_threshold variables only defined when
|
|
_IEEE_LIBM is not defined
|
|
Fixed warnings with GCC 6.1.0
|
|
- Compilation warnings fixed for some tools, and some cleanup in spasm/parser.c
|
|
- Fixed warnings with psxgte.h - specifier was put after and not before enumeration
|
|
- Fixed warnings in the examples
|
|
|
|
2015-07-29 (0.5.99):
|
|
- Added PSX_WarmReboot()
|
|
- Fixed extern directive for GsCurDrawEnvH: was wrongly specified for GsCurDrawEnvY
|
|
- NORMAL_LUMINOSITY is now an alias for NORMAL_LUMINANCE: "luminosity" is an incorrect term for the meaning
|
|
- Added PRFONT_RL(f), PRFONT_GL(f), RLFONT_BL(f) attributes to GsSetFontAttrib(). These allow to adjust the luminance factor for the color components used when drawing the font: in few words, when used correctly, the attributes can be used to change the color of the font on the fly, without using another color look-up table.
|
|
- Added set_cop_register(), get_cop_register() and run_cop_instruction().
|
|
set_cop0_register() and get_cop0_register() are now aliases for set_cop_register() and
|
|
get_cop_register() respectively.
|
|
- Added set_cop_ctrl_register() and get_cop_ctrl_register()
|
|
- Fixed some bugs in the Makefiles, thanks to rsoft and Missingno_force for providing patches
|
|
- Fixed a bug in bmp2tim where 4-bit images with a width not a multiply of 4, or 8-bit images with a width
|
|
not a multiply of 8 were erronously generated and thus contained invalid data.
|
|
It should not have been possible to generate such images in the first place.
|
|
- Fixed a bug in bmp2tim where unnecessary debug messages were printed on screen when converting an image.
|
|
- The path for objcopy hardcoded inside elf2exe is now taken from the OBJCOPY variable specified in Makefile.cfg,
|
|
and not from the OBJCOPY_PATH define in the source code itself
|
|
- Added -fno-strict-overflow flag by default to Makefile.cfg and to the psx-gcc and psx-g++ scripts
|
|
- Multiplication registers HI and LO are now saved and restored by the vblank and root counter handlers -
|
|
this could give problems if any division or multiplication instruction was used inside a handler.
|
|
Fortunately no such instructions are used inside handlers most times.
|
|
- Greatly improved nv-SPASM - now it should be fully compatible (maybe save some quirks)
|
|
with the Hitmen assembler
|
|
- Added GsVPrintFont()
|
|
|
|
2014-04-22 (0.4.99):
|
|
- Fixed the Makefile for the tools, now it considers the HOST_* variables and removes executables
|
|
correctly under Windows
|
|
- added --enable-languages=c to the command line to build GCC, in toolchain.txt
|
|
- Added abort() to libc
|
|
- Fixed Makefile for misc directory
|
|
- Fixed genscript.sh: generated link script playstation.x now correctly
|
|
includes libgcc and does not rely on EXTERN directives
|
|
- New SsUpload() implementation contributed by Shendo, which contains workarounds for emulators.
|
|
Also works on ePSXe.
|
|
- Fixed wrong return value for McWriteSector()
|
|
- Introduced debug build, that can be built by specifying the PSXSDK_DEBUG
|
|
flag at compile time - it has more verbose messages, diagnostics, etc.
|
|
- Very verbose messages are now only compiled in for the debug builds.
|
|
- Added support for the 1KB scratchpad, which is the data cache that went
|
|
unused in the PlayStation - it acts as a kind of "fast RAM";
|
|
it is accessible as the byte array __scratchpad
|
|
- Added RemoveRCntHandler()
|
|
- Removed the InitCARD() - StartCARD() - StopCARD() sequence in PSXSDK_Init() when using BIOS mode,
|
|
so that the vblank handler would not crash - the fix was acknowledging the interrupt in psxsdk's internal handler
|
|
(in start/start.s). Thanks to Shendo for reporting this.
|
|
- The shell to use when executing scripts can now be specified in Makefile.cfg by changing the HOST_SHELL variable
|
|
- Moved the prototypes for index(), rindex(), strcasecmp() and strncasecmp()
|
|
from string.h to strings.h, to be more standard
|
|
- Implemented the ffs*() and the popcount*() family of functions
|
|
(the prototypes are in string.h or strings.h)
|
|
- string.h now includes strings.h for backward compatibility - advice: do not rely on this.
|
|
when you use something whose prototype is in strings.h, ALSO include strings.h!
|
|
- implemented bitstring.h, bit string manipulation macros
|
|
- implemented memccpy()
|
|
- index() and rindex() were wrongly implemented both in libpsx/src/libc/string.c and as
|
|
macros in strings.h; now they are only implemented as macros in strings.h
|
|
- added swab()
|
|
- added defines for EXIT_SUCCESS and EXIT_FAILURE in stdlib.h
|
|
- __PSXSDK__ is now defined by psx-gcc, this makes easier for code
|
|
to detect it is being compiled for the PSXSDK
|
|
- added defines for O_RDLOCK, O_WRLOCK, O_SCAN, O_RCOM, O_EXCL, O_ASYNC, O_NOWAIT
|
|
and O_NOBUF, and corrected define for O_APPEND (it is now correctly 256, not 8) in fcntl.h
|
|
- Added a very simple implementation of stat().
|
|
Only the st_size, st_blksize and st_blocks fields are available in struct stat (sys/stat.h)
|
|
- Added exit() and atexit() (stdlib.h)
|
|
- Added vprintf()
|
|
- Added GsSetListEx()
|
|
- Added C++ support. Thanks to Mauro Persano (fzort) for contributing this the initialization code.
|
|
- Fixed linked list corruption bug in GSTPoly3()
|
|
- Added GsPolyLine() and GsGPolyLine() to draw non-graduated and graduated poly lines.
|
|
- Added GsGTPoly3() and GsGTPoly4() to draw graduated (shaded) textured 3-point and 4-point polygons
|
|
- Added nv-SPASM to PSXSDK, a free and open source implementation of the Hitmen's spASM assembler, written by nextvolume.
|
|
It will be installed as `spasm'.
|
|
|
|
2013-11-09 (0.3.99):
|
|
- Added GsRotateVector(). It is a wrapper to internal libpsx functions.
|
|
- Added prototype to nextfile() in psxbios.h, it was missing.
|
|
- Added documentation for SetVBlankHandler(), it was missing.
|
|
- Fixed bug in modplay where instruments with an empty sample were played
|
|
with the sample of the immediately next instrument; now they are not
|
|
played at all, which is the correct behaviour.
|
|
- libmodplay and its tools now ignore "useless" samples (less than 32 bytes)
|
|
when loading MOD files.
|
|
- Added Doxygen documentation for libmodplay.
|
|
- Removed division by zero bug in the MOD playing code in libmodplay.
|
|
Fixes crashing on real hardware.
|
|
- libmodplay now supports only MOD files, as the old saying goes
|
|
"do one thing and do it well".
|
|
- Implemented ctype completely in the libc. The is*() family of functions was
|
|
notably missing.
|
|
- Implemented atoi() and atol() in the libc.
|
|
- Fixed the issue of strtol() returning 0 for strings beginning with whitespace.
|
|
- Added PRFONT_UNIXLF attribute to built-in font rendering functions.
|
|
With PRFONT_UNIXLF, the writing goes to the new line and *also* to the beginning of the new line.
|
|
When not using PRFONT_UNIXLF, the '\r\n' sequence has the same effect as '\n' when using PRFONT_UNIXLF.
|
|
- Carriage return was ignored by GsPrintFont(). This is now fixed.
|
|
- Fixed bad code in libc/string.c
|
|
- Added strcasestr(), stpcpy(), stpncpy(), strnlen(), memrchr() to libc
|
|
- Added and adapted serial port library by Shendo.
|
|
- Added and adapted new pad reading code and memory card code by Shendo.
|
|
The memory card filesystem is not yet implemented! You can only use raw sector reads and writes for now.
|
|
- libadpcm is now at least eight times faster. There were some implicit floating point operations left which have been removed.
|
|
- SsAdpcmPack() now supports non-ending and non-looping samples, useful to generate sound data at runtime.
|
|
- Added experimental "NoBIOS" mode, where no BIOS calls and exception handlers are used.
|
|
It is accessed by passing the PSX_INIT_NOBIOS flag to PSX_InitEx(). Support for many things is missing or doesn't work as well
|
|
as the "BIOS" mode.
|
|
- [REALLY IMPORTANT]
|
|
The compiling and installation phases are now separate; i.e. to build and install the new SDK libraries and tools,
|
|
use "make" then "make install", instead of just "make" like it used to be.
|
|
- Added support for 'j', 't', 'z', 'q' length identifiers to vsnprintf()
|
|
- vsnprintf() now honors the space flag.
|
|
- [vsnprintf()]
|
|
The behavior when handling an unknown character in the format after '%' is now correct,
|
|
i.e. the character is added to the output string, and the format specification is escaped.
|
|
The previous, incorrect behavior was ignoring the character and staying in format
|
|
specification until the character for a known type was found.
|
|
- Added missing prototypes for strdup() and strndup() to string.h
|
|
- Now string functions use size_t instead of int for lengths and counts
|
|
- Added memmem(), lltoa(), ltoa(), itoa(), ulltoa(), ultoa() and utoa() to libc
|
|
|
|
2013-05-14 (0.2.99):
|
|
- Changed internal version to 0.2.99 (was 0.1.99)
|
|
- Implemented PSX_PollPad() which is similar to PSX_ReadPad() but much more advanced.
|
|
Analog sticks and NeGCon are now supported.
|
|
- Updated information about reading CD-RWs in the readme.
|
|
- Added --showoffset option in cdcat
|
|
- Added -removelogo option in lictool
|
|
- Added runexe.h and prototype for PSX_RunEXE(), which was missing
|
|
- Added GsDrawListPIO(), that uses GPU port I/O access instead of GPU DMA to transfer primitive data to the GPU.
|
|
- Added GsInitEx(), which allows to specify flags for GPU initilization.
|
|
GsInit() is now a wrapper to GsInitEx(), and it is the same as calling GsInitEx(0)
|
|
- srand() and rand() are now implemented in the C library and the BIOS versions are no longer used.
|
|
- Changed joypad reading code, now it should work better.
|
|
- Beginnings of XM music file support in libmodplay. Support doesn't really work yet, though.
|
|
- Added Coprocessor 0 register manipulation functions get_cop0_register() and set_cop0_register()
|
|
|
|
From 0.1 to 2013-01-14:
|
|
- Added several math constants (such as M_PI) to math.h
|
|
- Added GsSetDispEnvSimple() and GsSetDrawEnvSimple() prototypes to psxgpu.h. The functions already existed in 0.1 but they were not prototyped and a warning was given by the compiler when they were used in a program.
|
|
- Added sys/types.h
|
|
- [SERIOUS] Fixed GsSpriteFromImage() - the v value when the pixel mode was 4-bit or 8-bit was incorrect
|
|
- Added GetSystemRomVersion() function
|
|
- [SERIOUS] As many functions provided by the BIOS which handled memory did not work correctly or at all,
|
|
memcmp(), memcpy(), memmove(), memcmp(), memchr(), bzero(), bcopy() and bcmp() have been implemented in
|
|
PSXSDK's libc. This fixes a lot of problems.
|
|
- Fixed GsPrintFont(), the x position was incremented before drawing a character.
|
|
Now it is incremented after drawing a character.
|
|
- Now the joysticks/joypads are read using low-level routines instead of using BIOS routines.
|
|
This is more versatile and allows the implementation of things such as vibration.
|
|
On the other hand, this can cause conflicts with the BIOS' memory card handling routines.
|
|
If you don't do directly file manipulation calls on the memory card there should be no problem, however,
|
|
as the PSXSDK functions to read/write the memory card take care of that already.
|
|
The functions added are: QueryPAD(), pad_read_raw(), pad_escape_mode().
|
|
- Implemented vibration for DualShock-compatible controllers.
|
|
The functions added are: pad_enable_vibration(), pad_set_vibration()
|
|
- The PSXSnake example now vibrates your joystick when you die.
|
|
- Fixed calculate_real_padding_hex() in libc.c. This should fix padding with hexadecimal
|
|
numbers in vsnprintf based functions (sprintf() / GsPrintFont() / etc.).
|
|
- SetVBlankHandler() and SetRCntHandler() now change handler if they're called after an handler
|
|
has already been set. In 0.1, they did not change handler and kept the old handler.
|
|
- bmp2tim now also supports setting magic pink as transparent (like Allegro).
|
|
- scalex and scaley in the GsSprite structure now act like PsyQ or Blade Libs when they are
|
|
higher than eight. When they are lower than eight they act like in 0.1.
|
|
- Added scaling, wrapping, and justifying support to GsPrintFont()
|
|
Attributes can be set by using GsSetFontAttrib()
|
|
- In 0.1 bmp2tim crashed if it didn't find or couldn't read the source bitmap, this is fixed now.
|
|
- Fixed endianness issue for wav2vag on big endian machines.
|
|
- Added GsScreenW and GsScreenH global variables which report the size of the screen
|
|
in the current video mode so you don't have to keep track of that yourself
|
|
- Added is_load_delay_ok(). This checks if the load delay slot behaves as it does on real hardware.
|
|
Many emulators do not emulate the load delay slot and show inaccurate behavior.
|
|
You really need to know this only if you are doing interesting things with opcodes yourself, otherwise the compiler and the assembler will take care of this for you.
|
|
- After returning from main() the empty endless loop wasn't running. This is now fixed.
|
|
- Added %f format to vsnprintf(). This adds floating point support to all functions using the *sprintf() family of functions, including GsPrintFont
|
|
- Added '@' conversion to vsscanf and vsprintf(). It is a base-2 (binary) conversion and it is a psxsdk specific extension.
|
|
- Added support for 64-bit integers in vsnprintf() for binary, decimal, octal and hexadecimal formats.
|
|
- Added 2d rotation support to sprites.
|
|
- Added long file name support (via TRANS.TBL) to fopen() using the cdromL: virtual device
|
|
- Added gs_get_tpage_num, gs_get_tpage_u and gs_get_tpage_v macros to psxgpu.h, with which
|
|
you can obtain the tpage, u and v parameters for textures knowing the coordinate in the framebuffer
|
|
- Added GsIsWorking() alias for GsIsDrawing()
|
|
- Removed useless jr $ra, nop instruction sequence which was never executed in system calls, and fixed CriticalSection system calls
|
|
- Added GsScreenM to store current video mode (NTSC or PAL)
|
|
- Removed -O0 from the psx-gcc script, you can now specify optimizations on the compiler command line.
|
|
PSXSDK library code is still compiled without optimizations, though.
|
|
- Fixed a really nasty bug when checking if (input image width + x origin) and (input image height + y origin)
|
|
were out of boundary in bmp2tim
|
|
- GsPrintFont() now recognizes TAB ('\t') and prints it accordingly (eight white characters)
|
|
- Added the low-level CDROM library.
|
|
- Added PSX_InitEx(). It allows to more strictly control what is initialized compared to PSX_Init()
|
|
- Added -mpink option to tim2bmp. Transparency is rendered as "magic pink" in the output bitmap file.
|
|
- GsSetFont() now keeps the old value for the item related to the argument if -1 is passed as the value of the argument.
|
|
i.e: GsSetFont(-1, -1, 30, 40) will just change the font clut x and y to 30 and 40, and will keep the font origin x and y unchanged.
|
|
- Fixed some bugs in the huff program which were pointed out by Gemini ages ago, but were never fixed (really).
|
|
- Fixed vsnprintf buffer overflow.
|
|
- Fixed floating point printing bug in vsnprintf.
|
|
- Fixed the bug with GsGPoly4 that happened because the arrays of the colors in the structure were three bytes long
|
|
instead of correctly being four bytes long. Thanks to Xavier Del Campo Romero for reporting this.
|
|
- Implemented index(), rindex(), strspn(), strcspn(), strtok() and strsep() in the libc.
|
|
- Implemented strlwr() and strupr() in the libc.
|
|
- Implemented qsort() in the libc.
|
|
- Implemented realloc() in the libc.
|
|
- Implemented optional auto-waiting in GsDrawList(). If GsSetAutoWait() is called at any time in the program,
|
|
after that moment you will not need to wait for the GPU to finish working in your code, everything will be done
|
|
automatically. Auto-waiting needs to be enabled as it is disabled by default.
|
|
- Removed a totally wrong comment in start.s which said "this might now work on PSOne".
|
|
It made its way through despite being about some strange things happening when PSXSDK was
|
|
began to be programmed??
|
|
- Fixed stupid bug in SsUploadVag()
|
|
- Readded abs() to libc.
|
|
- Added PSX_INIT_SAVESTATE flag to PSX_Init() to save the state
|
|
of the BIOS before initializing the library
|
|
- Added PSX_RestoreBiosState()
|
|
- Added PSX_RunExe() to easily load another exe to run instead of the currently running one
|
|
- Changed the prototype and return value for PSX_GetButtonName() to something sane.
|
|
- GsUploadImage() now has a void return type. It was int before but it never returned anything.
|
|
- Fixed a lot of warnings when compiling libpsx.
|
|
- Fixed an array initialization out of bounds problem in libmodplay.
|