Japanese
◎ Mapping of memory used by the system

The system is in the WORK-HI area for controlling sprites and scrolling.
It uses 0x40000 bytes. Also, the texture is affected by the light source.
Since Gouraud shading is used when
It uses 264 bytes of VRAM. Their division and default
The settings are shown below.

MAX_POLYGONS: 1700 Number of usable polygons
MAX_VERTICES: 2500 Number of vertices that can be used
MAX_TRANSFER: 20 Number of transfer requests during blanking
MAX_NEST: 20 Number of matrix nests

slPutPolygon() adds the number of polygons used in the specified model and the number of vertices.
If the maximum number is exceeded, the model will not be processed.

Also, slPutSprite(), slDispSprite(), and slSetSprite() change the number of polygons each time they are executed.
are added one by one, and if the maximum number is exceeded, processing of that data is stopped.
(However, if the specified Z position is outside the display range, it will not be added.)


Work RAM:
     060C0000: (SortList)
         Table buffer for DMA transfer of sprite control data
         (MAX_POLYGONS+6)*3*4 bytes = 0x5400
         The reason for the +6 is that in addition to drawing sprites,
         system clipping
         user clipping
         relative coordinates
         window
         end command
         This is because system-related commands such as
         For details, please see the command table in the VDP1 User's Manual.
     060C4FF8: (Zbuffer)
         Primary buffer for polygon sorting (for window 0)
         128*4 = 0x200
     060C51F8: (Zbuffer2)
         Primary buffer 2 for polygon sorting (for window 1)
         128*4 = 0x200
     060C53F8: (Zbuf_nest)
         Secondary buffer for polygon sorting
         256*4 = 0x400
     060C57F8: (Spritebuf)
         sprite control data buffer
         (MAX_POLYGONS+6)*36 = 0xFC00
         The reason for adding +6 is for the same reason as SortList above.
     060D53F8: (Spritebuf2)
         Sprite control data buffer 2
         (MAX_POLYGONS+6)*36 = 0xFC00
         The reason for adding +6 is for the same reason as SortList above.
     060E37C8: (Pbuffer)
         Vertex position buffer for polygon calculation
         MAX_VERTICES*16 = 0x9C40
     060ECDC8: (CLOfstBuf)
         Color data table due to the influence of light source
         32*32*3=0xC00
     060ED9C8: (CommandBuf)
         Command passing buffer from master to slave
     060FB800: (TransList)
         DMA control table for transfer requests during blanking
         MAX_TRANSFER*3*4 bytes = 0xF0
     060FB8F0:
         Stack area (0x4310)

     060FFC00:
         System variable area (GBR register always points here)
         0x400 bytes
The system variables are shown below and can be read with the same name from a C program.

     system variables
        000: (EventTop) (EVENT *) ; First registered event
        004: (EventLast) (EVENT *) ; Event registered at the end
        008: (EventNow) (EVENT *) ; Event being executed
        00C: (EventCount) (Uint16) ; Remaining number of events
        00E: (WorkCount) (Uint16) ; Remaining number of works
        010: (MainMode) (Uint8) ; Main sequence mode
        011: (SubMode) (Uint8) ; Subsequence mode
        012: (SynchConst) (Sint8) ; Video synchronization count
        013: (SynchCount) (Sint8) ; Video synchronization count
        014: (UserFunction) (void (*)()) ; User function executed during blanking
        018: (TransCount) (Uint16) ; Number of transfer entries during blanking
        01A: (TransRequest) (Uint8) ; Request for transfer during blanking
        01B: (PauseFlag) (Uint8) ; Sprite and scroll pause flag
        
        01C: (mtptr) (MATRIX *) ; Current matrix pointer
        020: (MatrixCount) (Uint8) ; Matrix nest count
        021: (PrintColor) (Uint8) ; Color palette for displaying text
        022: (IntCount) (Uint16) ; Interrupt count
        024: (MsPbufPtr) (Uint32 *) ; Vertex coordinate calculation buffer pointer (Master)
        028: (SlPbufPtr) (Uint32 *) ; Vertex coordinate calculation buffer pointer (Slave)
        02C: (SpritePtr) (Uint16 *) ; Sprite data transfer pointer
        030: (MsSdataPtr) (Uint16 *) ; Sprite data set pointer (Master)
        034: (SlSdataPtr) (Uint16 *) ; Sprite data set pointer (Master)
        038: (ZbufPtr) (void **) ; Z buffer pointer
        03C: (FormTbl) (TEXTURE *) ; Texture data table
        040: (SprbufBias) (Uint32) ; Sprite data buffer switching
        044: (ComRdPtr) (Uint32 *) ; Command read pointer
        048: (ComWrPtr) (Uint32 *) ; Command set pointer
        04C: (MsLightVector) (VECTOR) ; Light source vector (Master)
        058: (SlLightVector) (VECTOR) ; Light source vector (Master)
        064: (ColorOffset) (Uint8 *) ; Color offset table pointer
        068: (MsScreenDist) (FIXED) ; Screen position (Master)
        06C: (SlScreenDist) (FIXED); Screen position (Slave)
        070: (MsZlimit) (Sint16) ; Display limit Z position (Master)
        072: (WindowNumber) (Uint8) ; Number of windows used
        073: (WinUseFlag) (Uint8) ; Window use flag
        074: (TotalPolygons) (Uint16) ; Number of calculated polygons
        076: (TotalVertices) (Uint16) ; Number of calculation vertices
        078: (MsScreenLeft) (Sint16) ; Screen left position
        07A: (MsScreenTop) (Sint16) ; Screen top position
        07C: (MsScreenRight) (Sint16) ; Screen right position
        07E: (MsScreenBottom) (Sint16) ; Screen bottom position
        080: (MsScreenSizeX) (Uint16) ; Screen horizontal size (Master)
        082: (MsScreenSizeY) (Uint16) ; Screen vertical size (Master)
        084: (MsWindowSizeX) (Uint16) ; Window size (Master)
        086: (MsWindowSizeY) (Uint16) ; Window size (Master)
        088: (MXPolygons) (Uint16) ; Maximum number of polygons
        08A: (MXVertices) (Uint16) ; Maximum number of vertices
        08C: (FrameSizeX) (Uint16) ; Frame buffer size
        08E: (FrameSizeY) (Uint16) ; Frame buffer size
        090: (MsWinXAdder) (Sint16) ; Addition data for window check (Master)
        092: (MsWinYAdder) (Sint16) ; Addition data for window check (Master)
        094: (SlWinXAdder) (Uint16) ; Addition data for window check (Slave)
        096: (SlWinYAdder) (Uint16) ; Addition data for window check (Slave)
        098: (MsClipXAdder) (Sint16) ; Addition data for clipping (horizontal) (Master)
        09A: (MsClipYAdder) (Sint16) ; Addition data for clipping (vertical) (Master)
        09C: (SlClipXAdder) (Sint16) ; Addition data for clipping (horizontal) (Slave)
        09E: (SlClipYAdder) (Sint16) ; Addition data for clipping (vertical) (Slave)
        0A0: (SlZlimit) (Sint16) ; Display limit Z position (Slave)
        0A2: (WinPtr) (Uint16) ; Window dataset offset
        0A4: (DispPolygons) (Uint16) ; Number of display polygons
        0A6: (DMAEndFlag) (Uint8) ; DMA transfer end flag (unused)
        0A8: (DMASetFlag) (Uint8) ; DMA table set flag
        0AA: (PutCount) (Uint16) ; Number of calls to slPutPolygon(),sl...Sprite()
        0AC: (MsZdpsftcnt) (Uint8) ; Screen display limit shift counter (Master)
        0AD: (SlZdpsftcnt) (Uint8) ; Screen display limit shift counter (Slave)
        
        0B0 : (Resolution) (Uint8) ; Screen mode
        0B1: (NbPCMBf) (Uint8); Number of PCM buffers (in units of 2000H)
        0B2 : (PCMBufFlag) (Sint16) ; PCM buffer free status flag
        0B4: (SoundRdCount) (Uint8); Sound buffer read counter
        0B5: (SoundWrCount) (Uint8); Sound buffer entry counter
        0B6: (FRT_Count) (Sint16); FRT counter
        0B7: (SCUMC_ID) (Uint8); SCU memory copy channel number
        0B8: (DMASt_CPU0) (Uint8); CPU D.M.A. status (CH0)
        0BA: (DMASt_CPU1) (Uint8); CPU D.M.A. status (CH1)
        0BB: (DMASt_SCU0) (Uint8); SCU D.M.A. status (CH0)
        0BC: (DMASt_SCU1) (Uint8); SCU D.M.A. status (CH1)
        0BD: (DMASt_SCU2) (Uint8); SCU D.M.A. status (CH2)
        0BE : (---------) (Uint16) ; System reservation
        
        0C0: (VDP2_TVMD) (Uint16) ; TV screen mode
        0C2: (VDP2_EXTEN) (Uint16) ; External signal enable
        0C4: (VDP2_TVSTAT) (Uint16) ; Screen status
        0C6: (VDP2_VRSIZE) (Uint16) ; VRAM size
        0C8: (VDP2_HCNT) (Uint16) ; H counter
        0CA: (VDP2_VCNT) (Uint16) ; V counter
        0CE: (VDP2_RAMCTL) (Uint16) ; RAM control
        0D0: (VDP2_CYCA0L) (Uint16) ; VRAM cycle pattern (bank A0, T0-3)
        0D2: (VDP2_CYCA0U) (Uint16) ; VRAM cycle pattern (bank A0, T4-7)
        0D4: (VDP2_CYCA1L) (Uint16) ; VRAM cycle pattern (bank A1, T0-3)
        0D6: (VDP2_CYCA1U) (Uint16) ; VRAM cycle pattern (Bank A1, T4-7)
        0D8: (VDP2_CYCB0L) (Uint16) ; VRAM cycle pattern (bank B0, T0-3)
        0DA: (VDP2_CYCB0U) (Uint16) ; VRAM cycle pattern (bank B0, T4-7)
        0DC: (VDP2_CYCB1L) (Uint16) ; VRAM cycle pattern (Bank B1, T0-3)
        0DE: (VDP2_CYCB1U) (Uint16) ; VRAM cycle pattern (Bank B1, T4-7)
        0E0: (VDP2_BGON) (Uint16) ; Screen display enable
        0E2: (VDP2_MZCTL) (Uint16) ; Mosaic control
        0E4: (VDP2_SFSEL) (Uint16) ; Special function code selection
        0E6: (VDP2_SFCODE) (Uint16) ; Special function code
        0E8: (VDP2_CHCTLA) (Uint16) ; Character control (NBG0, NBG1)
        0EA: (VDP2_CHCTLB) (Uint16) ; Character control (NBG2, NBG3, RBG0)
        0EC: (VDP2_BMPNA) (Uint16) ; Bitmap palette number (NBG0, 1)
        0EE: (VDP2_BMPNB) (Uint16) ; Bitmap palette number (RBG0)
        0F0: (VDP2_PNCN0) (Uint16) ; Pattern name control (NBG0)
        0F2: (VDP2_PNCN1) (Uint16) ; Pattern name control (NBG1)
        0F4: (VDP2_PNCN2) (Uint16) ; Pattern name control (NBG2)
        0F6: (VDP2_PNCN3) (Uint16) ; Pattern name control (NBG3)
        0F8: (VDP2_PNCR) (Uint16) ; Pattern name control (RBG0)
        0FA: (VDP2_PLSZ) (Uint16) ; Plane size
        0FC: (VDP2_MPOFN) (Uint16) ; Map offset (NBG0-3)
        0FE: (VDP2_MPOFR) (Uint16) ; Map offset (rotation parameters A, B)
        100: (VDP2_MPABN0) (Uint16) ; Map (NBG0 plane A, B)
        102: (VDP2_MPCDN0) (Uint16) ; Map (NBG0 plane C, D)
        104: (VDP2_MPABN1) (Uint16) ; Map (NBG1 plane A, B)
        106: (VDP2_MPCDN1) (Uint16) ; Map (NBG1 plane C, D)
        108: (VDP2_MPABN2) (Uint16) ; Map (NBG2 plane A, B)
        10A: (VDP2_MPCDN2) (Uint16) ; Map (NBG2 plane C, D)
        10C: (VDP2_MPABN3) (Uint16) ; Map (NBG3 plane A, B)
        10E: (VDP2_MPCDN3) (Uint16) ; Map (NBG3 plane C, D)
        110: (VDP2_MPABRA) (Uint16) ; Map (rotation parameter A plane A, B)
        112: (VDP2_MPCDRA) (Uint16) ; Map (rotation parameter A plane C, D)
        114: (VDP2_MPEFRA) (Uint16) ; Map (rotation parameter A plane E, F)
        116: (VDP2_MPGHRA) (Uint16) ; Map (rotation parameter A plane G, H)
        118: (VDP2_MPIJRA) (Uint16) ; Map (rotation parameter A plane I, J)
        11A: (VDP2_MPKLRA) (Uint16) ; Map (rotation parameter A plane K, L)
        11C: (VDP2_MPMNRA) (Uint16) ; Map (rotation parameter A plane M, N)
        11E: (VDP2_MPOPRA) (Uint16) ; Map (rotation parameter A plane O, P)
        120: (VDP2_MPABRB) (Uint16) ; Map (rotation parameter B plane A, B)
        122: (VDP2_MPCDRB) (Uint16) ; Map (rotation parameter B plane C, D)
        124: (VDP2_MPEFRB) (Uint16) ; Map (rotation parameter B plane E, F)
        126: (VDP2_MPGHRB) (Uint16) ; Map (rotation parameter B plane G, H)
        128: (VDP2_MPIJRB) (Uint16) ; Map (rotation parameter B plane I, J)
        12A: (VDP2_MPKLRB) (Uint16) ; Map (rotation parameter B plane K, L)
        12C: (VDP2_MPMNRB) (Uint16) ; Map (rotation parameter B plane M, N)
        12E: (VDP2_MPOPRB) (Uint16) ; Map (rotation parameter B plane O, P)
        130: (VDP2_SCXN0) (FIXED) ; Screen scroll value (NBG0, horizontal fixed decimal)
        130: (VDP2_SCXIN0) (Sint16) ; Screen scroll value (NBG0, horizontal integer part)
        132: (VDP2_SCXDN0) (Uint16) ; Screen scroll value (NBG0, horizontal decimal part)
        134: (VDP2_SCYN0) (FIXED) ; Screen scroll value (NBG0, vertical fixed decimal)
        134: (VDP2_SCYIN0) (Uint16) ; Screen scroll value (NBG0, vertical integer part)
        136: (VDP2_SCYDN0) (Uint16) ; Screen scroll value (NBG0, vertical decimal part)
        138: (VDP2_ZMXN0) (FIXED) ; Coordinate increment (NBG0, horizontal fixed decimal)
        138: (VDP2_ZMXIN0) (Uint16) ; Coordinate increment (NBG0, horizontal integer part)
        13A: (VDP2_ZMXDN0) (Uint16) ; Coordinate increment (NBG0, horizontal decimal part)
        13C: (VDP2_ZMYN0) (FIXED) ; Coordinate increment (NBG0, vertical fixed decimal)
        13C: (VDP2_ZMYIN0) (Uint16) ; Coordinate increment (NBG0, vertical integer part)
        13E: (VDP2_ZMYDN0) (Uint16) ; Coordinate increment (NBG0, vertical decimal part)
        140: (VDP2_SCXN1) (FIXED) ; Screen scroll value (NBG1, horizontal fixed decimal)
        140: (VDP2_SCXIN1) (Uint16) ; Screen scroll value (NBG1, horizontal integer part)
        142: (VDP2_SCXDN1) (Uint16) ; Screen scroll value (NBG1, horizontal decimal part)
        144: (VDP2_SCYN1) (FIXED) ; Screen scroll value (NBG1, vertical fixed decimal)
        144: (VDP2_SCYIN1) (Uint16) ; Screen scroll value (NBG1, vertical integer part)
        146: (VDP2_SCYDN1) (Uint16) ; Screen scroll value (NBG1, vertical decimal part)
        148: (VDP2_ZMXN1) (FIXED) ; Coordinate increment (NBG1, horizontal fixed decimal)
        148: (VDP2_ZMXIN1) (Uint16) ; Coordinate increment (NBG1, horizontal integer part)
        14A: (VDP2_ZMXDN1) (Uint16) ; Coordinate increment (NBG1, horizontal decimal part)
        14C: (VDP2_ZMYN1) (FIXED) ; Coordinate increment (NBG1, vertical fixed decimal)
        14C: (VDP2_ZMYIN1) (Uint16) ; Coordinate increment (NBG1, vertical integer part)
        14E: (VDP2_ZMYDN1) (Uint16) ; Coordinate increment (NBG1, vertical decimal part)
        150: (VDP2_SCXN2) (Uint16) ; Screen scroll value (NBG2, horizontal direction)
        152: (VDP2_SCYN2) (Uint16) ; Screen scroll value (NBG2, vertical direction)
        154: (VDP2_SCXN3) (Uint16) ; Screen scroll value (NBG3, horizontal direction)
        156: (VDP2_SCYN3) (Uint16) ; Screen scroll value (NBG3, vertical direction)
        158: (VDP2_ZMCTL) (Uint16) ; Reduction enable
        15A: (VDP2_SCRCTL) (Uint16) ; Line & vertical cell scroll control
        15C: (VDP2_VCSTA) (Uint16 *) ; Vertical cell scroll table address
        160: (VDP2_LSTA0) (Sint16 *) ; Line scroll table address for NBG0
        164: (VDP2_LSTA1) (Sint16 *) ; Line scroll table address for NBG1
        168: (VDP2_LCTA) (Uint16 *) ; Line color screen table address
        16C: (VDP2_BKTA) (Uint16 *) ; Back screen table address
        170: (VDP2_RPMD) (Uint16) ; Rotation parameter mode
        172: (VDP2_RPRCTL) (Uint16) ; Rotation parameter read control
        174: (VDP2_KTCTL) (Uint16) ; Coefficient table control
        176: (VDP2_KTAOF) (Uint16) ; Coefficient table address offset
        178: (VDP2_OVPNRA) (Uint16) ; Screen over pattern name
        17A: (VDP2_OVPNRB) (Uint16) ; Screen over pattern name
        17C: (VDP2_RPTA) (Sint32 *) ; Rotation parameter table address
        180: (VDP2_WPSX0) (Uint16) ; Window position (H start)
        182: (VDP2_WPSY0) (Uint16) ; Window position (V start)
        184: (VDP2_WPEX0) (Uint16) ; Window position (H stop)
        186: (VDP2_WPEY0) (Uint16) ; Window position (V stop)
        188: (VDP2_WPSX1) (Uint16) ; Window position (H start)
        18A: (VDP2_WPSY1) (Uint16) ; Window position (V start)
        18C: (VDP2_WPEX1) (Uint16) ; Window position (H stop)
        18E: (VDP2_WPEY1) (Uint16) ; Window position (V stop)
        190: (VDP2_WCTLA) (Uint16) ; Window control
        192: (VDP2_WCTLB) (Uint16) ; Window control
        194: (VDP2_WCTLC) (Uint16) ; Window control
        196: (VDP2_WCTLD) (Uint16) ; Window control
        198: (VDP2_LWTA0) (Uint16 *) ; Line window table address
        19C: (VDP2_LWTA1) (Uint16 *) ; Line window table address
        1A0: (VDP2_SPCTL) (Uint16) ; Sprite control
        1A2: (VDP2_SDCTL) (Uint16) ; Shadow control
        1A4: (VDP2_CRAOFA) (Uint16) ; Color RAM address offset (NBG0-3)
        1A6: (VDP2_CRAOFB) (Uint16) ; Color RAM address offset (RBG0, sprite)
        1A8: (VDP2_LNCLEN) (Uint16) ; Line color screen enable
        1AA: (VDP2_SFPRMD) (Uint16) ; Special priority mode
        1AC: (VDP2_CCCTL) (Uint16) ; Color calculation control
        1AE: (VDP2_SFCCMD) (Uint16) ; Special color calculation mode
        1B0: (VDP2_PRISA) (Uint16) ; Priority number
        1B2: (VDP2_PRISB) (Uint16) ; Priority number
        1B4: (VDP2_PRISC) (Uint16) ; Priority number
        1B6: (VDP2_PRISD) (Uint16) ; Priority number
        1B8: (VDP2_PRINA) (Uint16) ; Priority number
        1BA: (VDP2_PRINB) (Uint16) ; Priority number
        1BC: (VDP2_PRIR) (Uint16) ; Priority number
        1BE: (--------) (Uint16) ; System reservation
        1C0: (VDP2_CCRSA) (Uint16) ; Color calculation ratio (sprite 0, 1)
        1C2: (VDP2_CCRSB) (Uint16) ; Color calculation ratio (sprite 2, 3)
        1C4: (VDP2_CCRSC) (Uint16) ; Color calculation ratio (sprite 4, 5)
        1C6: (VDP2_CCRSD) (Uint16) ; Color calculation ratio (sprite 6, 7)
        1C8: (VDP2_CCRNA) (Uint16) ; Color calculation ratio (NBG0, 1)
        1CA: (VDP2_CCRNB) (Uint16) ; Color calculation ratio (NBG2, 3)
        1CC: (VDP2_CCRR) (Uint16) ; Color calculation ratio (RGB0)
        1CE: (VDP2_CCRLB) (Uint16) ; Color calculation ratio (line color screen, back screen)
        1D0: (VDP2_CLOFEN) (Uint16) ; Color offset enable
        1D2: (VDP2_CLOFSL) (Uint16) ; Color offset selection
        1D4: (VDP2_COAR) (Uint16) ; Color offset A (Red)
        1D6: (VDP2_COAG) (Uint16) ; Color offset A (Green)
        1D8: (VDP2_COAB) (Uint16) ; Color offset A (Blue)
        1DA: (VDP2_COBR) (Uint16) ; Color offset B (Red)
        1DC: (VDP2_COBG) (Uint16) ; Color offset B (Green)
        1DE: (VDP2_COBB) (Uint16) ; Color offset B (Blue)
        
        1E0: (ScrRotPtr) (ROTSCROLL *) ; Address of rotation parameter to be manipulated
        1E4: (nbg0_char_adr) (void *) ; CG address for NBG0
        1E8: (nbg1_char_adr) (void *) ; CG address for NBG1
        1EC: (nbg2_char_adr) (void *) ; CG address for NBG2
        1F0: (nbg3_char_adr) (void *) ; CG address for NBG3
        1F4: (ra_char_adr) (void *) ; CG address for RBG0 (parameter A)
        1F8: (rb_char_adr) (void *) ; CG address for RBG0 (parameter B)
        1FC: (nbg0_page_adr) (void *) ; Pattern name address for NBG0
        200: (nbg1_page_adr) (void *) ; Pattern name address for NBG1
        204: (nbg2_page_adr) (void *) ; Pattern name address for NBG2
        208: (nbg3_page_adr) (void *) ; Pattern name address for NBG3
        20C: (ra_page_adr) (void *) ; Pattern name address for RBG0 (parameter A)
        210: (rb_page_adr) (void *) ; Pattern name address for RBG0 (parameter B)
        214: (rpara_vram_adr)(void *) ; Rotation parameter set address
        218: (k_table_adr) (void *) ; Coefficient table set address
        21C: (RotScrParA) (ROTSCROLL) ; Rotation parameter A
        284: (RotScrParB) (ROTSCROLL) ; Rotation parameter B
        2EC: (Nbg2_PosX) (FIXED) ; NBG2 display position (X)
        2F0: (Nbg2_PosY) (FIXED) ; NBG2 display position (Y)
        2F4: (Nbg3_PosX) (FIXED) ; NBG3 display position (X)
        2F8: (Nbg3_PosY) (FIXED) ; NBG3 display position (Y)
        
        2FC: (Window_data) (Uint16[22]) ; Window control data buffer (2)
        328: (Center_data) (Uint16[10]) ; Window center control data buffer (2)
        33C: (RandWork) (Uint32) ; Random number generation work
        340: (CDReadExec) (void*()) ; CD reading server function
        344: (DMA_TRANS) (Uint32[10]) ; CPU D.M.A. parameter
        36C: (SOUND) (void*[3]) ; Sound buffer pointer
        378: (PERIPHERAL) (Uint32[12]) ; Peripheral control data


○ VDP1_VRAM
     The first and last areas of VDP1 VRAM starting from 0x25C00000 are determined by the system.
   Unavailable to users because it is in use.

   25C00000: Sprite control command
(MAX_POLYGON + 6) * 32 = 0xE1C0
   25C7FF00: Gouraud shading table
2*4*33 = 0x108(264)

○ VDP2_VRAM
     The VDP2 VRAM starting from 0x25E00000 is set as follows during system initialization.
   Separated.

   25E00000: VDP2_VRAM_A0
CG data for rotating scroll
   25E20000: VDP2_VRAM_A1
Rotating scroll coefficient data and rotation parameters
   25E40000: VDP2_VRAM_B0
Pattern name data for rotating scroll
   25E60000: VDP2_VRAM_B1
Normal scroll data
This area is shared by CG and pattern name.
     25E60000~25E67FFF (CG data for NBG0 and NBG1)
     25E68000~25E75FFF (CG data for NBG1)
     25E76000 to 25E77FFF (1 page of pattern name data for NBG0)
     25E78000 to 25E7FFFF (4 pages of pattern name data for NBG1)

   The CG is in 256 color mode for every scroll, and the pattern name is 1 word/cell.
   NBG0 is a 10-bit mode with an inversion flag for each cell, and other surfaces have inversion flags for each cell.
   12-bit mode is used.
   The color RAM is in 16-bit 2048 color mode, and no offset is used.
   The back side is monochrome, and color data (0000) is entered in 25E3FFFE.

 06000000: +--------------------------+
           | Boot ROM BIOS functions  |
 06000800: +--------------------------+
           | Slave CPU Stack Area     |
 06001000: +--------------------------+
           | Master CPU default Stack |
 06002000: +--------------------------+
           | ???                      |
 06004000: +--------------------------+
           |                          |
           | User Program & Data      |
           |                          |
 060C0000: +--------------------------+
           |                          |
           | SortList (5400)          |
           |                          |
 060C4FF8: +--------------------------+
           | Zbuffer (200)            |
 060C51F8: +--------------------------+
           | Zbuffer2 (200)           |
 060C53F8: +--------------------------+
           | Zbuf_nest (400)          |
 060C57F8: +--------------------------+
           |                          |
           | Spritebuf (FC00)         |
           |                          |
 060D53F8: +--------------------------+
           |                          |
           | Spritebuf2(FC00)         |
           |                          |
 060E37C8: +--------------------------+
           |                          |
           | Pbuffer (9C40)           |
           |                          |
 060ED408: +--------------------------+
           | CLOfstBuf (C00)          |
 060EE008: +--------------------------+
           |                          |
           | CommandBuf(D7F8)         |
           |                          |
 060FB800: +--------------------------+
           | TransList(F0)            |
 060FB8F0: +--------------------------+
           |                          |
           | Stack Area(4310)         |
           |                          |
 060FFC00: +--------------------------+
           | SystemWork(400)          |
 06100000: +--------------------------+


 25C00000: +--------------------------+
           |                          |
           | SpriteCommand(E1C0)      |
           |                          |
 25C0E1C0: +--------------------------+
           |                          |
           | Free (for User)          |
           |                          |
 25C7FEF8: +--------------------------+
           | Gouraud table(108)       |
 25C80000: +--------------------------+


 25E00000: +--------------------------+
           |                          |
           | RBG0 CG (2048chars)      |
           |                          |
 25E20000: +--------------------------+
           |                          |
           | RBG0 K table             |
           |                          |
 25E40000: +--------------------------+
           |                          |
           | RBG0 Map (16pages)       |
           |                          |
 25E60000: +--------------------------+
           | NBG0, NBG1 CG (512 chars)|
 25E68000: +- - - - - - - - - - - - - +
           | NBG1 CG (+896chars)      |
 25E76000: +--------------------------+
           | NBG0 Map (1page)         |
 25E78000: +--------------------------+
           | NBG1 Map (4pages)        |
 25E80000: +--------------------------+