Use MACL, MACH, and GBR as temporary.
Store pr in a register. (sts.l pr,r14)
This technique should only be used by those who are familiar with library behavior and SH assembly. These operations can cause the library to run out of control if not used properly. |
To deal with this,
If interrupt processing uses a divider, interrupts should be disabled in the main processing.
A divider is not used in interrupt processing.
SH The C compiler has an option switch that uses a divider, so if you do not want to be aware of this, use the option that does not use it (-div=cpu) or the option that disables interrupts when using the divider (- div=peripheral).
* gcc does not generate code that uses a divider unless you use it explicitly (for example, inline assembler) in your C compilation code.
It is in VBlank. (During the period when VDP2 is always writable)
SCSP is in a state where both 68000 and internal DSP are stopped.
VDP1 is not drawing or displaying.
CPU-DMA transfers and SCU-DMA transfers do not include the time to register data in registers.
First, VDP1 stores image data, sprite display commands, color lookup tables, and Gouraud shading tables in VRAM. Including all of this, it must be kept within 512KB. In other words, it doesn't mean that you can use 512KB just for the image data. Naturally, if picture data takes up a lot of data, there will be less space for commands, which will reduce the number of pictures that can be drawn, and vice versa. It would be best to keep these things in mind when finalizing the specifications.
Next is VDP2, which contains bitmap data, character pattern data, pattern name data, and in some cases, rotation coefficient data (this data can also be stored in color RAM). Of course all of this data can fit within VRAM, but there is also the issue of access.
The only thing to keep in mind is that bitmaps require a large amount of RAM, so you need to be careful.
To access the vector area, you must use the system program built into BOOT-ROM. SYS_SETSINT()
NMI vectors cannot be rewritten. This is for handling the reset button.
\SATURN\SEGASMP\SYS\MK.BAT SMPSYS.C SMPSYS.LNK SYS_ID.SRC
from,
Please rewrite it like this.
Also, if the data places too much load on VDP, it may not be displayed correctly. (In other words, frames will be dropped.)
Also, functions related to memory such as calloc, malloc, and sprintf compile and work, but this is not an appropriate way to program a gaming machine.
Calloc, malloc, etc. are functions that are deeply dependent on the OS, so if they are used on Saturn, an error will not be returned even if they are mapped to an illegal address. I think these are natural results considering that the Saturn is not a machine loaded with an OS.
(This is the same for both SBL and SGL.)
Please refer to the system program user's manual in the Programmer's Guide for information on the processing after a clock change.
To describe it simply,
For the above reasons, it is not possible to create data longer than 63 minutes and 4 seconds.
If the software you create is longer than 63 minutes and 4 seconds, it will naturally not be possible to commercialize it.
When emulating the cartridge part, is it possible to specify the address of the ROM image when setting the address on CartDev or Programming Box?
Does Cart Dev use SIMM memory for emulation?
In that case, is it possible to coexist with the file system?
Can ROM cartridges be accessed in byte units?
Are the SCU restrictions the same as normal A-Bus access?
We set the SCU weight, but how slow is the access compared to LOW-RAM?
Are there any sample programs that use data cartridges?
In the case of a CD, I will submit one created using a write-once writer, but how should I submit the data for the data cartridge part?
(Compress and submit with floppy, create ROM with ROM writer, etc.)
Since the ROM space to be used is fixed, it is not possible to specify the address of the ROM image.
Emulation will be performed by setting the SIMM in a special cartridge (sold by Ado Denshi) used in the SIMM system.
SIMM system (GFS debug mode) and cartridge emulation may be possible if the GFMC_Base setting address does not conflict with the cartridge usage address.
You can also do this in bytes.
No change. However, unlike the CD buffer, there is an update of the read address (that is, there is an update of the read address like a normal memory copy), so be careful when setting the DMA.
I set it to 3 clock waits (as stated in the manual), but it actually took about 25 clocks to obtain 16 bits of data.
This means that it is about 4 times slower than WORKRAM-L.
No sample program is provided. Be careful when programming so that reading from the CD and reading the cartridge do not overlap.
Like old cartridge software such as MegaDrive, it is basically delivered in ROM. This format may be subject to change at the time of delivery.
Create an executable file in BIN format.
Create an IP.
Create a virtual CD script file and create a disk image.
Check operation with virtual CD.
Create a TOC file using VCDMKTOC.EXE.
Create a write-once CD using SEGACDW.EXE.
For an explanation of the IP itself and how to write a self-starting CD script file, see
The execution procedure for each item is as follows.
objcopy -O binary input output
or with GCC's link option
-Xlinker -oformat -Xlinker binary
If you change the read address of 1stREAD FILE, you need to recompile the IP.
The IP sources and security objects currently provided are for SH-C, so it is necessary to create an IP using Hitachi SH-C.
Alternatively, we can provide the files necessary to create an IP for GNU by email, so please contact us if you need them.
The file (1ST READ FILE) that is automatically loaded after loading the IP is the first file in ASCII order on the CD-ROM (synonymous with the file with file identifier 2).
Specify the file name on the CD-ROM with the File command, and specify the source on DOS with the FileSource command. At this time, the file name on the CD and the source file name do not need to match.
Also, please refer to the attached document for the meaning of the text files registered in the system area. (These text files can be dummy during development, but be sure to include text files related to rights before mastering.) Note that when using the self-starting execution method, the SNASM debugger is not used. Please note that this is not possible.
.DATA.B \data>> twenty four .DATA.B \data<< 8>> twenty four .DATA.B \data<< 16>> twenty four .DATA.B \data<< twenty four>> twenty four
Please define a macro such as
6002000H + IP size┏━━━━━━━━━━━━━━━┓ ┃ 1st read file ┃ ┃ loadable area ┃ ┃ ┃ ┃ ┃ 60FF000H ┣━━━━━━━━━━━━━━━┫ ┃ System usage ┃ ┃ area ┃ 60FFFFFH ┗━━━━━━━━━━━━━━━┛
60FF000H to 60FFFFFH are used by the system, so never load the 1st read file.
After loading the 1st read file, it will be released to the application.
Also, 6000000H to 6001FFFH are used by the system and should not be used by applications.
However, stacks from 600E00H to 6001FFFH can be used.
After IP processing is completed and the application starts,
If you prepare other stacks of master SH, up to 6001000H,
If you prepare another slave SH stack, up to 6000E00H.
Each can be used.
6000000H ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Vector, resident routine ┃ 6000E00H ┣━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ Slave SH stack ┃ 6001000H ┣━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ Master SH stack ┃ 6002000H ┣━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ ┃