summaryrefslogtreecommitdiff
path: root/libpsx/include/psxbios.h
diff options
context:
space:
mode:
authorXavi Del Campo <xavi.dcr@tutanota.com>2020-01-31 10:32:23 +0100
committerXavi Del Campo <xavi.dcr@tutanota.com>2020-01-31 10:32:23 +0100
commit7c24e9a9b02b04dcaf9507acb94091ea70a2c02d (patch)
treec28d0748652ad4b4222309e46e6cfc82c0906220 /libpsx/include/psxbios.h
parenta2b7b6bb1cc2f4a3258b7b2dbc92399d151f864d (diff)
downloadpsxsdk-7c24e9a9b02b04dcaf9507acb94091ea70a2c02d.tar.gz
Imported pristine psxsdk-20190410 from official repo
Diffstat (limited to 'libpsx/include/psxbios.h')
-rw-r--r--libpsx/include/psxbios.h215
1 files changed, 215 insertions, 0 deletions
diff --git a/libpsx/include/psxbios.h b/libpsx/include/psxbios.h
new file mode 100644
index 0000000..9275393
--- /dev/null
+++ b/libpsx/include/psxbios.h
@@ -0,0 +1,215 @@
+/*
+ * PSXSDK: Bios functions
+ */
+
+#ifndef _PSXBIOS_H
+#define _PSXBIOS_H
+
+/* Joypad functions */
+
+extern void PAD_init(unsigned long mode, unsigned long *pad_buf);
+extern int PAD_dr(void);
+
+/* ROM information functions */
+
+/**
+ * Returns PSX kernel date.
+ * @return Kernel date n 0xYYYYMMDD BCD format.
+ */
+
+unsigned long GetKernelDate(void);
+
+/**
+ * Returns a pointer to a zero-terminated
+ * string which contains the kernel ROM version.
+ * @return Pointer to a zero-terminated string which contains the kernel ROM version.
+ */
+
+const char *GetKernelRomVersion(void);
+
+/**
+ * Returns a pointer to a zero-terminated
+ * string which contains the system ROM version.
+ * @return Zero-terminated string which contains the system ROM version.
+ */
+
+const char *GetSystemRomVersion(void);
+
+/**
+ * GetRamSize() should return size of RAM in bytes.
+ * It doesn't seem to work most times. On SCPH1001, it returns 0.
+ * On SCPH1000, it returns 2 (which is the number of megabytes of RAM
+ * the PSX has.)
+ * @return Size of RAM in bytes.
+ */
+
+unsigned int GetRamSize(void);
+
+/* Interrupt/Exception functions */
+
+/*void Exception();*/
+
+/**
+ * Enters a critical section.
+ */
+
+void EnterCriticalSection(void);
+
+/**
+ * Exits a critical section.
+ */
+
+void ExitCriticalSection(void);
+
+void SysEnqIntRP(int index, unsigned int *buf);
+void SysDeqIntRP(int index, unsigned int *buf);
+
+void ResetEntryInt(void);
+
+
+/**
+ * Directory entry
+ */
+struct DIRENTRY
+{
+ /** Filename */
+ char name[20];
+ /** Attributes */
+ unsigned int attr;
+ /** File size in bytes */
+ int size;
+ /** Pointer to next file entry */
+ struct DIRENTRY *next;
+ /** System reserved */
+ unsigned char system[8];
+};
+
+/**
+ * Gets information about the first file which
+ * matches the pattern. ? and * wildcards can be used.
+ * Characters after * are ignored.
+ * @param name File name string
+ * @param dirent Pointer to a struct DIRENTRY object.
+ * @return dirent on success, NULL on failure.
+ */
+
+struct DIRENTRY *firstfile(const char *name, struct DIRENTRY *dirent);
+
+/**
+ * Finds a file with the same conditions as the previous call to firstfile().
+ * If a corresponding file is found, file information is stored
+ * to the structure pointed to by dir.
+ *
+ * @param dir Pointer to a struct DIRENTRY object.
+ * @return dir on success, NULL on failure.
+ */
+
+struct DIRENTRY *nextfile(struct DIRENTRY *dir);
+
+/**
+ * Gets the file size of the file named "name".
+ * It is actually just a wrapper around firstfile.
+ * It rounds the file size to the block size (2048).
+ * @param name FIle name string
+ * @return File size in bytes, rounded.
+ */
+
+int get_file_size(const char *name);
+
+/**
+ * This function is like get_file_size() but doesn't round
+ * the file size to the block size.
+ * @param name File name string
+ * @return File size in bytes, unrounded.
+ */
+
+int get_real_file_size(const char *name);
+
+void InitHeap(void *block , int size);
+void FlushCache(void);
+
+void SetRCntHandler(void (*callback)(), int spec, unsigned short target);
+void RemoveRCntHandler(int spec);
+
+/**
+ * Opens an event, and returns its identifier
+ * Must be executed in a critical section
+ * @param desc Numerical cause descriptor
+ * @param spec Numerical event type
+ * @param mode Numerical mode
+ * @param func Function pointer to callback function
+ * @return Numerical identifier for the event opened
+ */
+
+int OpenEvent(
+ int desc, // Cause descriptor
+ int spec, // Event type
+ int mode, // Mode
+ int *(*func)(void) // Pointer to callback function
+);
+
+/**
+ * Enables an event by its identifier returned by OpenEvent()
+ * @param event Numerical event identifier
+ * @return ???
+ */
+
+int EnableEvent(unsigned int event);
+
+/**
+ * Closes an event by its identifier
+ * @param event Numerical event identifier
+ * @return ???
+ */
+
+int CloseEvent(unsigned int event);
+
+/**
+ * Disables an event by its identifier
+ * @param event Numerical event identifier
+ * @return ???
+ */
+
+int DisableEvent(unsigned int event);
+
+/**
+ * Generates an event. This must be executed in a critical section.
+ * If the event to deliver is set to generate an interrupt, the handler function is called.
+ * @param ev1 Numerical cause descriptor
+ * @param ev2 Numerical event class
+ * @return ???
+ */
+
+int DeliverEvent(unsigned int ev1, // Cause descriptor
+ int ev2); // Event class
+
+/**
+ * Checks if the event specified by its identifier has occured
+ * @param event Numerical event identifier
+ * @return 1 if the event has occured, 0 if it has not
+ */
+
+int TestEvent(unsigned int event);
+
+/**
+ * Waits until the event specified by identifier occurs.
+ * @param event Numerical event identifier
+ * @return 1 on success, 0 on failure.
+ */
+
+int WaitEvent(unsigned int event);
+
+/**
+ * Replaces the executable image in memory with the one
+ * contained in another executable file in PSX-EXE format.
+ * WARNING: Does not work right now.
+ *
+ * Most likely you want PSX_RunExe()
+ * @param name Path name of PSX-EXE executable
+ * @param argc Number of arguments
+ * @param argv Pointer to an array of string pointers for each argument
+ */
+
+void LoadExec(char *name, int argc, char **argv);
+
+#endif