[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
/***************************************************************************************
* Genesis Plus
2012-10-13 19:01:31 +02:00
* CD drive processor & CD - DA fader
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
*
2024-02-06 00:27:25 +01:00
* Copyright ( C ) 2012 - 2024 Eke - Eke ( Genesis Plus GX )
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
*
* Redistribution and use of this code or any derivative works are permitted
* provided that the following conditions are met :
*
* - Redistributions may not be sold , nor may they be used in a commercial
* product or activity .
*
* - Redistributions that are modified from the original source must include the
* complete source code , including the source code for all components used by a
* binary built from the modified sources . However , as a special exception , the
* source code distributed need not include anything that is normally distributed
* ( in either source or binary form ) with the major components ( compiler , kernel ,
* and so on ) of the operating system on which the executable runs , unless that
* component itself accompanies the executable .
*
* - Redistributions must reproduce the above copyright notice , this list of
* conditions and the following disclaimer in the documentation and / or other
* materials provided with the distribution .
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS " AS IS "
* AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR
* CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS
* INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN
* CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE )
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE .
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include "shared.h"
2021-09-13 19:32:52 +02:00
# include "megasd.h"
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
2015-04-26 21:54:22 +02:00
# if defined(USE_LIBTREMOR) || defined(USE_LIBVORBIS)
2013-06-16 23:38:47 +02:00
# define SUPPORTED_EXT 20
# else
# define SUPPORTED_EXT 10
# endif
2015-05-31 18:21:35 +02:00
/* CD blocks scanning speed */
# define CD_SCAN_SPEED 30
/* CD tracks type (CD-DA by default) */
2019-11-25 19:30:07 +01:00
# define TYPE_AUDIO 0x00
# define TYPE_MODE1 0x01
# define TYPE_MODE2 0x02
2015-05-31 18:21:35 +02:00
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
/* BCD conversion lookup tables */
static const uint8 lut_BCD_8 [ 100 ] =
{
0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 ,
0x10 , 0x11 , 0x12 , 0x13 , 0x14 , 0x15 , 0x16 , 0x17 , 0x18 , 0x19 ,
0x20 , 0x21 , 0x22 , 0x23 , 0x24 , 0x25 , 0x26 , 0x27 , 0x28 , 0x29 ,
0x30 , 0x31 , 0x32 , 0x33 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 ,
0x40 , 0x41 , 0x42 , 0x43 , 0x44 , 0x45 , 0x46 , 0x47 , 0x48 , 0x49 ,
0x50 , 0x51 , 0x52 , 0x53 , 0x54 , 0x55 , 0x56 , 0x57 , 0x58 , 0x59 ,
0x60 , 0x61 , 0x62 , 0x63 , 0x64 , 0x65 , 0x66 , 0x67 , 0x68 , 0x69 ,
0x70 , 0x71 , 0x72 , 0x73 , 0x74 , 0x75 , 0x76 , 0x77 , 0x78 , 0x79 ,
0x80 , 0x81 , 0x82 , 0x83 , 0x84 , 0x85 , 0x86 , 0x87 , 0x88 , 0x89 ,
0x90 , 0x91 , 0x92 , 0x93 , 0x94 , 0x95 , 0x96 , 0x97 , 0x98 , 0x99 ,
} ;
static const uint16 lut_BCD_16 [ 100 ] =
{
0x0000 , 0x0001 , 0x0002 , 0x0003 , 0x0004 , 0x0005 , 0x0006 , 0x0007 , 0x0008 , 0x0009 ,
0x0100 , 0x0101 , 0x0102 , 0x0103 , 0x0104 , 0x0105 , 0x0106 , 0x0107 , 0x0108 , 0x0109 ,
0x0200 , 0x0201 , 0x0202 , 0x0203 , 0x0204 , 0x0205 , 0x0206 , 0x0207 , 0x0208 , 0x0209 ,
0x0300 , 0x0301 , 0x0302 , 0x0303 , 0x0304 , 0x0305 , 0x0306 , 0x0307 , 0x0308 , 0x0309 ,
0x0400 , 0x0401 , 0x0402 , 0x0403 , 0x0404 , 0x0405 , 0x0406 , 0x0407 , 0x0408 , 0x0409 ,
0x0500 , 0x0501 , 0x0502 , 0x0503 , 0x0504 , 0x0505 , 0x0506 , 0x0507 , 0x0508 , 0x0509 ,
0x0600 , 0x0601 , 0x0602 , 0x0603 , 0x0604 , 0x0605 , 0x0606 , 0x0607 , 0x0608 , 0x0609 ,
0x0700 , 0x0701 , 0x0702 , 0x0703 , 0x0704 , 0x0705 , 0x0706 , 0x0707 , 0x0708 , 0x0709 ,
0x0800 , 0x0801 , 0x0802 , 0x0803 , 0x0804 , 0x0805 , 0x0806 , 0x0807 , 0x0808 , 0x0809 ,
0x0900 , 0x0901 , 0x0902 , 0x0903 , 0x0904 , 0x0905 , 0x0906 , 0x0907 , 0x0908 , 0x0909 ,
} ;
2012-10-13 19:01:31 +02:00
/* pre-build TOC */
2012-07-15 17:15:01 +02:00
static const uint16 toc_snatcher [ 21 ] =
{
2012-10-13 19:01:31 +02:00
56014 , 495 , 10120 , 20555 , 1580 , 5417 , 12502 , 16090 , 6553 , 9681 ,
8148 , 20228 , 8622 , 6142 , 5858 , 1287 , 7424 , 3535 , 31697 , 2485 ,
2012-07-15 17:15:01 +02:00
31380
} ;
2012-10-13 19:01:31 +02:00
static const uint16 toc_lunar [ 52 ] =
{
5422 , 1057 , 7932 , 5401 , 6380 , 6592 , 5862 , 5937 , 5478 , 5870 ,
6673 , 6613 , 6429 , 4996 , 4977 , 5657 , 3720 , 5892 , 3140 , 3263 ,
6351 , 5187 , 3249 , 1464 , 1596 , 1750 , 1751 , 6599 , 4578 , 5205 ,
1550 , 1827 , 2328 , 1346 , 1569 , 1613 , 7199 , 4928 , 1656 , 2549 ,
1875 , 3901 , 1850 , 2399 , 2028 , 1724 , 4889 , 14551 , 1184 , 2132 ,
685 , 3167
} ;
2012-11-06 21:29:13 +01:00
static const uint32 toc_shadow [ 15 ] =
{
10226 , 70054 , 11100 , 12532 , 12444 , 11923 , 10059 , 10167 , 10138 , 13792 ,
11637 , 2547 , 2521 , 3856 , 900
} ;
2013-04-19 16:55:52 +02:00
static const uint32 toc_dungeon [ 13 ] =
{
2250 , 22950 , 16350 , 24900 , 13875 , 19950 , 13800 , 15375 , 17400 , 17100 ,
3325 , 6825 , 25275
} ;
static const uint32 toc_ffight [ 26 ] =
{
11994 , 9742 , 10136 , 9685 , 9553 , 14588 , 9430 , 8721 , 9975 , 9764 ,
9704 , 12796 , 585 , 754 , 951 , 624 , 9047 , 1068 , 817 , 9191 , 1024 ,
14562 , 10320 , 8627 , 3795 , 3047
} ;
static const uint32 toc_ffightj [ 29 ] =
{
11994 , 9752 , 10119 , 9690 , 9567 , 14575 , 9431 , 8731 , 9965 , 9763 ,
9716 , 12791 , 579 , 751 , 958 , 630 , 9050 , 1052 , 825 , 9193 , 1026 ,
14553 , 9834 , 10542 , 1699 , 1792 , 1781 , 3783 , 3052
} ;
2012-10-13 19:01:31 +02:00
2019-11-11 17:31:29 +01:00
/* supported audio file extensions */
2013-06-16 23:38:47 +02:00
static const char extensions [ SUPPORTED_EXT ] [ 16 ] =
2012-10-13 19:01:31 +02:00
{
2015-04-26 21:54:22 +02:00
# if defined(USE_LIBTREMOR) || defined(USE_LIBVORBIS)
2013-06-16 23:38:47 +02:00
" %02d.ogg " ,
" %02d.ogg " ,
" -%02d.ogg " ,
" _%02d.ogg " ,
" - %02d.ogg " ,
" %d.ogg " ,
" %d.ogg " ,
" -%d.ogg " ,
" _%d.ogg " ,
" - %d.ogg " ,
# endif
2012-10-13 19:01:31 +02:00
" %02d.wav " ,
" %02d.wav " ,
" -%02d.wav " ,
" _%02d.wav " ,
" - %02d.wav " ,
" %d.wav " ,
" %d.wav " ,
" -%d.wav " ,
" _%d.wav " ,
" - %d.wav "
} ;
2015-04-26 21:54:22 +02:00
# if defined(USE_LIBTREMOR) || defined(USE_LIBVORBIS)
2017-06-30 13:42:47 +02:00
static int seek64_wrap ( void * f , ogg_int64_t off , int whence ) {
return cdStreamSeek ( f , off , whence ) ;
}
static ov_callbacks cb =
{
( size_t ( * ) ( void * , size_t , size_t , void * ) ) cdStreamRead ,
( int ( * ) ( void * , ogg_int64_t , int ) ) seek64_wrap ,
( int ( * ) ( void * ) ) cdStreamClose ,
( long ( * ) ( void * ) ) cdStreamTell
} ;
2013-07-14 17:05:44 +02:00
# ifdef DISABLE_MANY_OGG_OPEN_FILES
static void ogg_free ( int i )
{
/* clear OGG file descriptor to prevent file from being closed */
cdd . toc . tracks [ i ] . vf . datasource = NULL ;
/* close VORBIS file structure */
ov_clear ( & cdd . toc . tracks [ i ] . vf ) ;
/* indicates that the track is a seekable VORBIS file */
cdd . toc . tracks [ i ] . vf . seekable = 1 ;
/* reset file reading position */
2017-06-30 13:42:47 +02:00
cdStreamSeek ( cdd . toc . tracks [ i ] . fd , 0 , SEEK_SET ) ;
2013-07-14 17:05:44 +02:00
}
# endif
2017-06-30 13:42:47 +02:00
2013-07-14 17:05:44 +02:00
# endif
2014-10-10 18:34:33 +02:00
void cdd_init ( int samplerate )
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2012-10-13 19:01:31 +02:00
/* CD-DA is running by default at 44100 Hz */
/* Audio stream is resampled to desired rate using Blip Buffer */
2016-12-18 23:09:16 +01:00
blip_set_rates ( snd . blips [ 2 ] , 44100 , samplerate ) ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
void cdd_reset ( void )
{
2012-10-13 19:01:31 +02:00
/* reset drive access latency */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
cdd . latency = 0 ;
2019-03-23 14:01:43 +01:00
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
/* reset track index */
cdd . index = 0 ;
2019-03-23 14:01:43 +01:00
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
/* reset logical block address */
cdd . lba = 0 ;
/* reset status */
2018-08-31 01:52:31 +02:00
cdd . status = cdd . loaded ? CD_TOC : NO_DISC ;
2012-10-13 19:01:31 +02:00
/* reset CD-DA fader (full volume) */
2018-08-30 18:37:12 +02:00
cdd . fader [ 0 ] = cdd . fader [ 1 ] = 0x400 ;
2012-10-13 19:01:31 +02:00
/* clear CD-DA output */
cdd . audio [ 0 ] = cdd . audio [ 1 ] = 0 ;
}
int cdd_context_save ( uint8 * state )
{
int bufferptr = 0 ;
2021-09-09 00:54:45 +02:00
unsigned int offset = 0 ;
2012-10-13 19:01:31 +02:00
save_param ( & cdd . cycles , sizeof ( cdd . cycles ) ) ;
save_param ( & cdd . latency , sizeof ( cdd . latency ) ) ;
save_param ( & cdd . index , sizeof ( cdd . index ) ) ;
save_param ( & cdd . lba , sizeof ( cdd . lba ) ) ;
save_param ( & cdd . scanOffset , sizeof ( cdd . scanOffset ) ) ;
2018-08-30 18:37:12 +02:00
save_param ( & cdd . fader , sizeof ( cdd . fader ) ) ;
2012-10-13 19:01:31 +02:00
save_param ( & cdd . status , sizeof ( cdd . status ) ) ;
2021-09-09 00:54:45 +02:00
/* current track is an audio track ? */
if ( cdd . toc . tracks [ cdd . index ] . type = = TYPE_AUDIO )
{
/* get file read offset */
# if defined(USE_LIBCHDR)
if ( cdd . chd . file )
{
/* CHD file offset */
offset = cdd . chd . hunkofs ;
}
else
# endif
# if defined(USE_LIBTREMOR) || defined(USE_LIBVORBIS)
if ( cdd . toc . tracks [ cdd . index ] . vf . seekable )
{
/* VORBIS file sample offset */
offset = ov_pcm_tell ( & cdd . toc . tracks [ cdd . index ] . vf ) ;
}
else
# endif
if ( cdd . toc . tracks [ cdd . index ] . fd )
{
/* PCM file offset */
offset = cdStreamTell ( cdd . toc . tracks [ cdd . index ] . fd ) ;
}
}
save_param ( & offset , sizeof ( offset ) ) ;
save_param ( & cdd . audio , sizeof ( cdd . audio ) ) ;
2012-10-13 19:01:31 +02:00
return bufferptr ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
2021-09-09 00:54:45 +02:00
int cdd_context_load ( uint8 * state , char * version )
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2021-09-09 00:54:45 +02:00
unsigned int offset , lba , index ;
2012-10-13 19:01:31 +02:00
int bufferptr = 0 ;
load_param ( & cdd . cycles , sizeof ( cdd . cycles ) ) ;
load_param ( & cdd . latency , sizeof ( cdd . latency ) ) ;
2021-09-09 00:54:45 +02:00
load_param ( & index , sizeof ( cdd . index ) ) ;
load_param ( & lba , sizeof ( cdd . lba ) ) ;
2012-10-13 19:01:31 +02:00
load_param ( & cdd . scanOffset , sizeof ( cdd . scanOffset ) ) ;
2018-08-30 18:37:12 +02:00
load_param ( & cdd . fader , sizeof ( cdd . fader ) ) ;
2012-10-13 19:01:31 +02:00
load_param ( & cdd . status , sizeof ( cdd . status ) ) ;
2021-09-09 00:54:45 +02:00
/* update current sector */
cdd . lba = lba ;
2012-10-13 19:01:31 +02:00
2021-09-09 00:54:45 +02:00
/* support for previous state version (1.7.5) */
if ( ( version [ 11 ] = = 0x31 ) & & ( version [ 13 ] = = 0x37 ) & & ( version [ 15 ] = = 0x35 ) )
2015-05-31 18:21:35 +02:00
{
2021-09-09 00:54:45 +02:00
/* current track is an audio track ? */
if ( cdd . toc . tracks [ index ] . type = = TYPE_AUDIO )
{
/* stay within track limits when seeking files */
if ( lba < cdd . toc . tracks [ index ] . start )
{
lba = cdd . toc . tracks [ index ] . start ;
}
2015-05-31 18:21:35 +02:00
2021-09-09 00:54:45 +02:00
/* seek to current track sector */
cdd_seek_audio ( index , lba ) ;
}
2017-08-27 16:42:31 +02:00
}
else
2012-10-13 19:01:31 +02:00
{
2021-09-09 00:54:45 +02:00
load_param ( & offset , sizeof ( offset ) ) ;
load_param ( & cdd . audio , sizeof ( cdd . audio ) ) ;
/* current track is an audio track ? */
if ( cdd . toc . tracks [ index ] . type = = TYPE_AUDIO )
{
2015-04-26 21:54:22 +02:00
# if defined(USE_LIBTREMOR) || defined(USE_LIBVORBIS)
2013-07-14 17:05:44 +02:00
# ifdef DISABLE_MANY_OGG_OPEN_FILES
2021-09-09 00:54:45 +02:00
/* check if track index has changed */
if ( index ! = cdd . index )
{
/* close previous track VORBIS file structure to save memory */
if ( cdd . toc . tracks [ cdd . index ] . vf . datasource )
{
ogg_free ( cdd . index ) ;
}
/* open current track VORBIS file */
if ( cdd . toc . tracks [ index ] . vf . seekable )
{
ov_open_callbacks ( cdd . toc . tracks [ index ] . fd , & cdd . toc . tracks [ index ] . vf , 0 , 0 , cb ) ;
}
}
2013-07-14 17:05:44 +02:00
# endif
# endif
2021-09-09 00:54:45 +02:00
/* seek to current file read offset */
# if defined(USE_LIBCHDR)
if ( cdd . chd . file )
{
/* CHD file offset */
cdd . chd . hunkofs = offset ;
}
else
# endif
# if defined(USE_LIBTREMOR) || defined(USE_LIBVORBIS)
if ( cdd . toc . tracks [ index ] . vf . seekable )
{
/* VORBIS file sample offset */
ov_pcm_seek ( & cdd . toc . tracks [ index ] . vf , offset ) ;
}
else
# endif
if ( cdd . toc . tracks [ index ] . fd )
{
/* PCM file offset */
cdStreamSeek ( cdd . toc . tracks [ index ] . fd , offset , SEEK_SET ) ;
}
}
}
/* seek to current subcode position */
if ( cdd . toc . sub )
2012-10-13 19:01:31 +02:00
{
2021-09-09 00:54:45 +02:00
/* 96 bytes per sector */
cdStreamSeek ( cdd . toc . sub , lba * 96 , SEEK_SET ) ;
2012-10-13 19:01:31 +02:00
}
2021-09-09 00:54:45 +02:00
/* update current track index */
cdd . index = index ;
2012-10-13 19:01:31 +02:00
return bufferptr ;
}
int cdd_load ( char * filename , char * header )
{
2015-05-31 18:21:35 +02:00
char fname [ 256 + 10 ] ;
2012-10-13 19:01:31 +02:00
char line [ 128 ] ;
2015-05-31 18:21:35 +02:00
char * ptr , * lptr ;
2017-06-30 13:42:47 +02:00
cdStream * fd ;
2015-05-31 18:21:35 +02:00
2021-09-13 19:32:52 +02:00
/* assume normal CD image file by default */
2015-05-31 18:21:35 +02:00
int isCDfile = 1 ;
2021-09-13 19:32:52 +02:00
int isMSDfile = 0 ;
2012-10-13 19:01:31 +02:00
/* first unmount any loaded disc */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
cdd_unload ( ) ;
2012-10-13 19:01:31 +02:00
/* open file */
2017-06-30 13:42:47 +02:00
fd = cdStreamOpen ( filename ) ;
2017-08-27 16:42:31 +02:00
if ( ! fd )
2021-08-31 09:50:38 +02:00
{
/* do not return an error as this could be a ROM loaded in memory */
/* which should be handled by load_archive function */
return ( 0 ) ;
}
2017-08-27 16:42:31 +02:00
# if defined(USE_LIBCHDR)
2020-08-25 15:56:17 +02:00
if ( ! memcmp ( " chd " , & filename [ strlen ( filename ) - 3 ] , 3 ) | | ! memcmp ( " CHD " , & filename [ strlen ( filename ) - 3 ] , 3 ) )
2017-08-27 16:42:31 +02:00
{
int sectors = 0 ;
char metadata [ 256 ] ;
const chd_header * head ;
/* open CHD file */
if ( chd_open_file ( fd , CHD_OPEN_READ , NULL , & cdd . chd . file ) ! = CHDERR_NONE )
{
chd_close ( cdd . chd . file ) ;
cdStreamClose ( fd ) ;
return - 1 ;
}
/* retrieve CHD header */
head = chd_get_header ( cdd . chd . file ) ;
2021-09-13 19:32:52 +02:00
2017-08-27 16:42:31 +02:00
/* detect invalid hunk size */
if ( ( head - > hunkbytes = = 0 ) | | ( head - > hunkbytes % CD_FRAME_SIZE ) )
{
chd_close ( cdd . chd . file ) ;
cdStreamClose ( fd ) ;
return - 1 ;
}
/* allocate hunk buffer */
cdd . chd . hunk = ( uint8 * ) malloc ( head - > hunkbytes ) ;
if ( ! cdd . chd . hunk )
{
chd_close ( cdd . chd . file ) ;
cdStreamClose ( fd ) ;
return - 1 ;
}
/* initialize hunk size (usually fixed to 8 sectors) */
cdd . chd . hunkbytes = head - > hunkbytes ;
/* initialize buffered hunk index */
cdd . chd . hunknum = - 1 ;
/* retrieve tracks informations */
for ( cdd . toc . last = 0 ; cdd . toc . last < 99 ; cdd . toc . last + + )
{
int tracknum = 0 , frames = 0 , pregap = 0 , postgap = 0 ;
char type [ 16 ] , subtype [ 16 ] , pgtype [ 16 ] , pgsub [ 16 ] ;
type [ 0 ] = subtype [ 0 ] = pgtype [ 0 ] = pgsub [ 0 ] = 0 ;
/* attempt fetch either complete or partial metadata for current track */
if ( chd_get_metadata ( cdd . chd . file , CDROM_TRACK_METADATA2_TAG , cdd . toc . last , metadata , 256 , 0 , 0 , 0 ) = = CHDERR_NONE )
{
if ( sscanf ( metadata , CDROM_TRACK_METADATA2_FORMAT , & tracknum , & type [ 0 ] , & subtype [ 0 ] , & frames , & pregap , & pgtype [ 0 ] , & pgsub [ 0 ] , & postgap ) ! = 8 )
break ;
}
else if ( chd_get_metadata ( cdd . chd . file , CDROM_TRACK_METADATA_TAG , cdd . toc . last , metadata , 256 , 0 , 0 , 0 ) = = CHDERR_NONE )
{
if ( sscanf ( metadata , CDROM_TRACK_METADATA_FORMAT , & tracknum , & type [ 0 ] , & subtype [ 0 ] , & frames ) ! = 4 )
break ;
}
/* no more track */
else break ;
/* detect out of order track number or invalid parameter */
if ( ( tracknum ! = ( cdd . toc . last + 1 ) ) | | ( frames < 0 ) | | ( pregap < 0 ) | | ( postgap < 0 ) )
break ;
/* detect track type */
if ( cdd . toc . last )
{
/* CD-ROM track supported only for first track */
if ( strcmp ( type , " AUDIO " ) )
break ;
/* Audio track start LBA (adjusted with pregap length) */
cdd . toc . tracks [ cdd . toc . last ] . start = cdd . toc . end + pregap ;
}
else
{
2019-11-25 19:30:07 +01:00
if ( ! strcmp ( type , " MODE1_RAW " ) )
{
/* Mode 1 RAW format (2352 bytes data blocks) */
cdd . sectorSize = 2352 ;
cdd . toc . tracks [ 0 ] . type = TYPE_MODE1 ;
}
else if ( ! strcmp ( type , " MODE1 " ) )
{
/* Mode 1 COOKED format (2048 bytes data blocks) */
2017-08-27 16:42:31 +02:00
cdd . sectorSize = 2048 ;
2019-11-25 19:30:07 +01:00
cdd . toc . tracks [ 0 ] . type = TYPE_MODE1 ;
}
else if ( ! strcmp ( type , " MODE2_RAW " ) )
{
/* Mode 2 RAW format (2352 bytes data blocks) */
2017-08-27 16:42:31 +02:00
cdd . sectorSize = 2352 ;
2019-11-25 19:30:07 +01:00
cdd . toc . tracks [ 0 ] . type = TYPE_MODE2 ;
}
2017-08-27 16:42:31 +02:00
else if ( strcmp ( type , " AUDIO " ) )
2019-11-25 19:30:07 +01:00
{
/* unsupported track format */
2017-08-27 16:42:31 +02:00
break ;
2019-11-25 19:30:07 +01:00
}
/* First track start LBA (2s pause assumed by default) */
2017-08-27 16:42:31 +02:00
cdd . toc . tracks [ 0 ] . start = 0 ;
}
/* detect pregap type */
if ( pgtype [ 0 ] ! = ' V ' )
{
/* clear pause length for further calculations (not included in CHD file) */
pregap = 0 ;
}
/* track end LBA (remove included pause from CHD track length) */
cdd . toc . tracks [ cdd . toc . last ] . end = cdd . toc . tracks [ cdd . toc . last ] . start + frames - pregap ;
/* CHD file offset for current track */
cdd . toc . tracks [ cdd . toc . last ] . offset = ( sectors + pregap - cdd . toc . tracks [ cdd . toc . last ] . start ) * CD_FRAME_SIZE ;
/* update TOC end with postgap length */
cdd . toc . end = cdd . toc . tracks [ cdd . toc . last ] . end + postgap ;
/* update CHD file sector count (adjusted with end of the track padding) */
sectors + = ( ( ( frames + CD_TRACK_PADDING - 1 ) / CD_TRACK_PADDING ) * CD_TRACK_PADDING ) ;
/* indicate valid track file */
cdd . toc . tracks [ cdd . toc . last ] . fd = fd ;
}
/* valid CD-ROM image file ? */
if ( cdd . sectorSize )
{
/* read first chunk of data */
cdd . chd . hunknum = cdd . toc . tracks [ 0 ] . offset / cdd . chd . hunkbytes ;
chd_read ( cdd . chd . file , cdd . chd . hunknum , cdd . chd . hunk ) ;
2017-09-23 00:14:43 +02:00
/* copy CD image header + security code (skip RAW sector 16-byte header) */
memcpy ( header , cdd . chd . hunk + ( cdd . toc . tracks [ 0 ] . offset % cdd . chd . hunkbytes ) + ( ( cdd . sectorSize = = 2048 ) ? 0 : 16 ) , 0x210 ) ;
2017-08-27 16:42:31 +02:00
}
/* valid CD image ? */
if ( cdd . toc . last & & ( cdd . toc . end < ( 100 * 60 * 75 ) ) )
{
/* Lead-out */
cdd . toc . tracks [ cdd . toc . last ] . start = cdd . toc . end ;
/* CD mounted */
2021-09-13 19:32:52 +02:00
cdd . loaded = HW_ADDON_MEGACD ;
2017-08-27 16:42:31 +02:00
return 1 ;
}
/* invalid CHD file */
chd_close ( cdd . chd . file ) ;
cdStreamClose ( fd ) ;
return - 1 ;
}
# endif
2012-10-13 19:01:31 +02:00
2021-09-13 19:32:52 +02:00
/* save a copy of base filename (max. 255 characters) */
strncpy ( fname , filename , 255 ) ;
fname [ 256 ] = 0 ;
2012-10-13 19:01:31 +02:00
2015-05-31 18:21:35 +02:00
/* check loaded file extension */
2020-08-25 15:56:17 +02:00
if ( memcmp ( " cue " , & filename [ strlen ( filename ) - 3 ] , 3 ) & & memcmp ( " CUE " , & filename [ strlen ( filename ) - 3 ] , 3 ) )
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2015-05-31 18:21:35 +02:00
int len ;
2012-10-13 19:01:31 +02:00
2019-11-25 19:30:07 +01:00
static const uint8 sync [ 12 ] = { 0x00 , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x00 } ;
2015-05-31 18:21:35 +02:00
/* read first 16 bytes */
2017-06-30 13:42:47 +02:00
cdStreamRead ( header , 0x10 , 1 , fd ) ;
2012-10-13 19:01:31 +02:00
2019-11-25 19:30:07 +01:00
/* auto-detect valid Sega CD image */
2015-05-31 18:21:35 +02:00
if ( ! memcmp ( " SEGADISCSYSTEM " , header , 14 ) )
2019-11-25 19:30:07 +01:00
{
/* COOKED CD-ROM image (2048 bytes data blocks) */
2015-05-31 18:21:35 +02:00
cdd . sectorSize = 2048 ;
2019-11-25 19:30:07 +01:00
/* CD-ROM Mode 1 by default */
cdd . toc . tracks [ 0 ] . type = TYPE_MODE1 ;
2015-05-31 18:21:35 +02:00
}
2012-10-13 19:01:31 +02:00
2019-11-25 19:30:07 +01:00
/* auto-detect CD-ROM synchro pattern */
else if ( ! memcmp ( sync , header , 12 ) )
{
/* RAW CD-ROM image (2352 bytes data blocks) */
cdd . sectorSize = 2352 ;
/* auto-detect CD-ROM mode from block header (byte 15) */
cdd . toc . tracks [ 0 ] . type = header [ 15 ] ;
/* read next 16 bytes (start of user data) */
cdStreamRead ( header , 0x10 , 1 , fd ) ;
2012-10-13 19:01:31 +02:00
}
2019-11-25 19:30:07 +01:00
/* supported CD-ROM image file ? */
if ( ( cdd . toc . tracks [ 0 ] . type = = TYPE_MODE1 ) | | ( cdd . toc . tracks [ 0 ] . type = = TYPE_MODE2 ) )
2015-05-31 18:21:35 +02:00
{
2019-11-25 19:30:07 +01:00
/* read Sega CD image header + security code */
2017-06-30 13:42:47 +02:00
cdStreamRead ( header + 0x10 , 0x200 , 1 , fd ) ;
2012-10-13 19:01:31 +02:00
2015-05-31 18:21:35 +02:00
/* initialize first track file descriptor */
cdd . toc . tracks [ 0 ] . fd = fd ;
2012-10-13 19:01:31 +02:00
2015-05-31 18:21:35 +02:00
/* DATA track end LBA (based on DATA file length) */
2017-06-30 13:42:47 +02:00
cdStreamSeek ( fd , 0 , SEEK_END ) ;
cdd . toc . tracks [ 0 ] . end = cdStreamTell ( fd ) / cdd . sectorSize ;
2015-07-09 23:48:30 +02:00
/* DATA track length should be at least 2s (BIOS requirement) */
if ( cdd . toc . tracks [ 0 ] . end < 150 )
{
cdd . toc . tracks [ 0 ] . end = 150 ;
}
2015-05-31 18:21:35 +02:00
/* DATA track start LBA (logical block 0) */
2017-06-30 13:42:47 +02:00
cdStreamSeek ( fd , 0 , SEEK_SET ) ;
2015-05-31 18:21:35 +02:00
cdd . toc . tracks [ 0 ] . start = 0 ;
2012-10-13 19:01:31 +02:00
2015-05-31 18:21:35 +02:00
/* initialize TOC */
cdd . toc . end = cdd . toc . tracks [ 0 ] . end ;
cdd . toc . last = 1 ;
}
else
2012-10-13 19:01:31 +02:00
{
2019-11-25 19:30:07 +01:00
/* this is not a supported CD-ROM image file */
2015-05-31 18:21:35 +02:00
isCDfile = 0 ;
2012-10-13 19:01:31 +02:00
2015-05-31 18:21:35 +02:00
/* close file */
2017-06-30 13:42:47 +02:00
cdStreamClose ( fd ) ;
2012-10-13 19:01:31 +02:00
}
2015-05-31 18:21:35 +02:00
/* automatically try to mount CD associated CUE file */
len = strlen ( fname ) ;
while ( ( len & & ( fname [ len ] ! = ' . ' ) ) | | ( len > 251 ) ) len - - ;
strcpy ( & fname [ len ] , " .cue " ) ;
2017-06-30 13:42:47 +02:00
fd = cdStreamOpen ( fname ) ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
2015-05-31 18:21:35 +02:00
/* parse CUE file */
2012-10-13 19:01:31 +02:00
if ( fd )
{
2015-05-31 18:21:35 +02:00
int mm , ss , bb , pregap = 0 ;
2021-09-17 10:08:40 +02:00
int index = 0 ;
2015-05-31 18:21:35 +02:00
/* DATA track already loaded ? */
if ( cdd . toc . last )
2012-10-13 19:01:31 +02:00
{
2015-05-31 18:21:35 +02:00
/* skip first track */
2017-06-30 13:42:47 +02:00
while ( cdStreamGets ( line , 128 , fd ) )
2012-10-13 19:01:31 +02:00
{
2015-05-31 18:21:35 +02:00
if ( strstr ( line , " INDEX 01 " ) & & ! strstr ( line , " INDEX 1 " ) )
break ;
2012-10-13 19:01:31 +02:00
}
}
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
2015-05-31 18:21:35 +02:00
/* read lines until end of file */
2017-06-30 13:42:47 +02:00
while ( cdStreamGets ( line , 128 , fd ) )
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2012-10-13 19:01:31 +02:00
/* skip any SPACE characters */
lptr = line ;
while ( * lptr = = 0x20 ) lptr + + ;
/* decode FILE commands */
if ( ! ( memcmp ( lptr , " FILE " , 4 ) ) )
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2015-05-31 18:21:35 +02:00
/* retrieve current path */
2012-10-13 19:01:31 +02:00
ptr = fname + strlen ( fname ) - 1 ;
while ( ( ptr - fname ) & & ( * ptr ! = ' / ' ) & & ( * ptr ! = ' \\ ' ) ) ptr - - ;
if ( ptr - fname ) ptr + + ;
2015-05-31 18:21:35 +02:00
/* skip "FILE" attribute */
lptr + = 4 ;
/* skip SPACE characters */
while ( * lptr = = 0x20 ) lptr + + ;
/* retrieve full filename */
if ( * lptr = = ' \" ' )
{
/* skip first DOUBLE QUOTE character */
lptr + + ;
while ( ( * lptr ! = ' \" ' ) & & ( lptr < = ( line + 128 ) ) & & ( ptr < ( fname + 255 ) ) )
* ptr + + = * lptr + + ;
}
else
2012-10-13 19:01:31 +02:00
{
2015-05-31 18:21:35 +02:00
/* no DOUBLE QUOTE used */
while ( ( * lptr ! = 0x20 ) & & ( lptr < = ( line + 128 ) ) & & ( ptr < ( fname + 255 ) ) )
* ptr + + = * lptr + + ;
2012-10-13 19:01:31 +02:00
}
* ptr = 0 ;
2015-05-31 18:21:35 +02:00
/* open current track file descriptor */
2017-06-30 13:42:47 +02:00
cdd . toc . tracks [ cdd . toc . last ] . fd = cdStreamOpen ( fname ) ;
2012-10-13 19:01:31 +02:00
if ( ! cdd . toc . tracks [ cdd . toc . last ] . fd )
{
/* error opening file */
break ;
2012-07-15 17:15:01 +02:00
}
2012-10-13 19:01:31 +02:00
/* reset current file PREGAP length */
pregap = 0 ;
2013-06-18 01:31:25 +02:00
2015-05-31 18:21:35 +02:00
/* reset current track file read offset */
2013-06-18 01:31:25 +02:00
cdd . toc . tracks [ cdd . toc . last ] . offset = 0 ;
2015-05-31 18:21:35 +02:00
/* check supported audio file types */
if ( ! strstr ( lptr , " BINARY " ) & & ! strstr ( lptr , " MOTOROLA " ) )
2013-06-18 01:31:25 +02:00
{
/* read file header */
2019-11-11 17:31:29 +01:00
unsigned char head [ 12 ] ;
cdStreamRead ( head , 12 , 1 , cdd . toc . tracks [ cdd . toc . last ] . fd ) ;
2017-06-30 13:42:47 +02:00
cdStreamSeek ( cdd . toc . tracks [ cdd . toc . last ] . fd , 0 , SEEK_SET ) ;
2019-11-25 19:30:07 +01:00
2019-11-11 17:31:29 +01:00
/* autodetect WAVE file */
if ( ! memcmp ( head , " RIFF " , 4 ) & & ! memcmp ( head + 8 , " WAVE " , 4 ) )
2013-06-18 01:31:25 +02:00
{
2019-11-11 17:31:29 +01:00
/* look for 'data' chunk */
int chunkSize , dataOffset = 0 ;
cdStreamSeek ( cdd . toc . tracks [ cdd . toc . last ] . fd , 12 , SEEK_SET ) ;
while ( cdStreamRead ( head , 8 , 1 , cdd . toc . tracks [ cdd . toc . last ] . fd ) )
2016-09-09 16:03:41 +02:00
{
if ( ! memcmp ( head , " data " , 4 ) )
{
2019-11-11 17:31:29 +01:00
dataOffset = cdStreamTell ( cdd . toc . tracks [ cdd . toc . last ] . fd ) ;
2017-06-30 13:42:47 +02:00
cdStreamSeek ( cdd . toc . tracks [ cdd . toc . last ] . fd , 0 , SEEK_SET ) ;
2016-09-09 16:03:41 +02:00
break ;
}
2019-11-11 17:31:29 +01:00
chunkSize = head [ 4 ] + ( head [ 5 ] < < 8 ) + ( head [ 6 ] < < 16 ) + ( head [ 7 ] < < 24 ) ;
cdStreamSeek ( cdd . toc . tracks [ cdd . toc . last ] . fd , chunkSize , SEEK_CUR ) ;
2016-09-09 16:03:41 +02:00
}
/* check if 'data' chunk has not been found */
if ( ! dataOffset )
{
/* invalid WAVE file */
2017-06-30 13:42:47 +02:00
cdStreamClose ( cdd . toc . tracks [ cdd . toc . last ] . fd ) ;
2016-09-09 16:03:41 +02:00
cdd . toc . tracks [ cdd . toc . last ] . fd = 0 ;
break ;
}
2013-06-18 01:31:25 +02:00
/* adjust current track file read offset with WAVE header length */
2016-09-09 16:03:41 +02:00
cdd . toc . tracks [ cdd . toc . last ] . offset - = dataOffset ;
2013-06-18 01:31:25 +02:00
}
2015-04-26 21:54:22 +02:00
# if defined(USE_LIBTREMOR) || defined(USE_LIBVORBIS)
2017-06-30 13:42:47 +02:00
else if ( ! ov_open_callbacks ( cdd . toc . tracks [ cdd . toc . last ] . fd , & cdd . toc . tracks [ cdd . toc . last ] . vf , 0 , 0 , cb ) )
2013-06-18 01:31:25 +02:00
{
/* retrieve stream infos */
vorbis_info * info = ov_info ( & cdd . toc . tracks [ cdd . toc . last ] . vf , - 1 ) ;
if ( ! info | | ( info - > rate ! = 44100 ) | | ( info - > channels ! = 2 ) )
{
/* unsupported VORBIS file format (stereo @44.1kHz only) */
ov_clear ( & cdd . toc . tracks [ cdd . toc . last ] . vf ) ;
cdd . toc . tracks [ cdd . toc . last ] . fd = 0 ;
break ;
}
}
# endif
else
{
/* unsupported audio file */
2017-06-30 13:42:47 +02:00
cdStreamClose ( cdd . toc . tracks [ cdd . toc . last ] . fd ) ;
2013-06-18 01:31:25 +02:00
cdd . toc . tracks [ cdd . toc . last ] . fd = 0 ;
break ;
}
}
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
2012-10-13 19:01:31 +02:00
/* decode TRACK commands */
2015-05-31 18:21:35 +02:00
else if ( ( sscanf ( lptr , " TRACK %02d %*s " , & bb ) ) | | ( sscanf ( lptr , " TRACK %d %*s " , & bb ) ) )
2012-07-15 17:15:01 +02:00
{
2019-11-25 19:30:07 +01:00
/* autodetect DATA track type (first track only) */
2015-05-31 18:21:35 +02:00
if ( ! cdd . toc . last )
{
if ( strstr ( lptr , " MODE1/2048 " ) )
{
2019-11-25 19:30:07 +01:00
/* Mode 1 COOKED format (2048 bytes / block) */
2015-05-31 18:21:35 +02:00
cdd . sectorSize = 2048 ;
2019-11-25 19:30:07 +01:00
cdd . toc . tracks [ 0 ] . type = TYPE_MODE1 ;
2015-05-31 18:21:35 +02:00
}
else if ( strstr ( lptr , " MODE1/2352 " ) )
{
2019-11-25 19:30:07 +01:00
/* Mode 1 RAW format (2352 bytes / block) */
2015-05-31 18:21:35 +02:00
cdd . sectorSize = 2352 ;
2019-11-25 19:30:07 +01:00
cdd . toc . tracks [ 0 ] . type = TYPE_MODE1 ;
}
else if ( strstr ( lptr , " MODE2/2352 " ) )
{
/* Mode 2 RAW format (2352 bytes / block) */
cdd . sectorSize = 2352 ;
cdd . toc . tracks [ 0 ] . type = TYPE_MODE2 ;
2015-05-31 18:21:35 +02:00
}
if ( cdd . sectorSize )
{
2019-11-25 19:30:07 +01:00
if ( cdd . sectorSize = = 2352 )
{
/* skip 16-byte header */
cdStreamSeek ( cdd . toc . tracks [ 0 ] . fd , 0x10 , SEEK_SET ) ;
}
2015-05-31 18:21:35 +02:00
/* read CD image header + security code */
2017-06-30 13:42:47 +02:00
cdStreamRead ( header , 0x210 , 1 , cdd . toc . tracks [ 0 ] . fd ) ;
cdStreamSeek ( cdd . toc . tracks [ 0 ] . fd , 0 , SEEK_SET ) ;
2015-05-31 18:21:35 +02:00
}
}
else
2012-10-13 19:01:31 +02:00
{
2015-05-31 18:21:35 +02:00
/* check if same file is used for consecutive tracks */
if ( ! cdd . toc . tracks [ cdd . toc . last ] . fd )
{
/* clear previous track end time */
cdd . toc . tracks [ cdd . toc . last - 1 ] . end = 0 ;
}
2012-10-13 19:01:31 +02:00
}
2021-09-17 10:08:40 +02:00
/* save current track index */
index = cdd . toc . last ;
2012-07-15 17:15:01 +02:00
}
2012-10-13 19:01:31 +02:00
2021-09-13 19:32:52 +02:00
/* decode REM LOOP xxx command (MegaSD specific command) */
else if ( sscanf ( lptr , " REM LOOP %d " , & bb ) = = 1 )
{
2021-09-17 10:08:40 +02:00
cdd . toc . tracks [ index ] . loopEnabled = 1 ;
cdd . toc . tracks [ index ] . loopOffset = bb ;
2021-09-13 19:32:52 +02:00
isMSDfile = 1 ;
}
/* decode REM LOOP command (MegaSD specific command) */
else if ( strstr ( lptr , " REM LOOP " ) )
{
2021-09-17 10:08:40 +02:00
cdd . toc . tracks [ index ] . loopEnabled = 1 ;
2021-09-13 19:32:52 +02:00
isMSDfile = 1 ;
}
/* decode REM NOLOOP command (MegaSD specific command) */
else if ( strstr ( lptr , " REM NOLOOP " ) )
{
2021-09-17 10:08:40 +02:00
cdd . toc . tracks [ index ] . loopEnabled = - 1 ;
2021-09-13 19:32:52 +02:00
isMSDfile = 1 ;
}
2012-10-13 19:01:31 +02:00
/* decode PREGAP commands */
else if ( sscanf ( lptr , " PREGAP %02d:%02d:%02d " , & mm , & ss , & bb ) = = 3 )
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2012-10-13 19:01:31 +02:00
/* increment current file PREGAP length */
pregap + = bb + ss * 75 + mm * 60 * 75 ;
2012-07-15 17:15:01 +02:00
}
2012-10-13 19:01:31 +02:00
/* decode INDEX commands */
else if ( ( sscanf ( lptr , " INDEX 00 %02d:%02d:%02d " , & mm , & ss , & bb ) = = 3 ) | |
2015-05-31 18:21:35 +02:00
( sscanf ( lptr , " INDEX 0 %02d:%02d:%02d " , & mm , & ss , & bb ) = = 3 ) )
2012-07-15 17:15:01 +02:00
{
2015-05-31 18:21:35 +02:00
/* check if previous track end time needs to be set */
if ( cdd . toc . last & & ! cdd . toc . tracks [ cdd . toc . last - 1 ] . end )
2012-07-15 17:15:01 +02:00
{
2015-05-31 18:21:35 +02:00
/* set previous track end time (current file absolute time + PREGAP length) */
2012-10-13 19:01:31 +02:00
cdd . toc . tracks [ cdd . toc . last - 1 ] . end = bb + ss * 75 + mm * 60 * 75 + pregap ;
}
}
else if ( ( sscanf ( lptr , " INDEX 01 %02d:%02d:%02d " , & mm , & ss , & bb ) = = 3 ) | |
2015-05-31 18:21:35 +02:00
( sscanf ( lptr , " INDEX 1 %02d:%02d:%02d " , & mm , & ss , & bb ) = = 3 ) )
2012-10-13 19:01:31 +02:00
{
2015-05-31 18:21:35 +02:00
/* adjust current track file read offset with current file PREGAP length (only used for AUDIO track) */
2013-06-18 01:31:25 +02:00
cdd . toc . tracks [ cdd . toc . last ] . offset + = pregap * 2352 ;
2012-10-13 19:01:31 +02:00
2015-05-31 18:21:35 +02:00
/* check if a single file is used for consecutive tracks */
2019-11-27 23:11:09 +01:00
if ( ! cdd . toc . tracks [ cdd . toc . last ] . fd & & cdd . toc . last )
2012-10-13 19:01:31 +02:00
{
2013-06-18 01:31:25 +02:00
/* use common file descriptor */
2019-11-27 23:11:09 +01:00
cdd . toc . tracks [ cdd . toc . last ] . fd = cdd . toc . tracks [ cdd . toc . last - 1 ] . fd ;
2013-06-18 01:31:25 +02:00
2015-05-31 18:21:35 +02:00
/* current track start time (based on current file absolute time + PREGAP length) */
2013-06-18 01:31:25 +02:00
cdd . toc . tracks [ cdd . toc . last ] . start = bb + ss * 75 + mm * 60 * 75 + pregap ;
2015-05-31 18:21:35 +02:00
/* check if previous track end time needs to be set */
2019-11-27 23:11:09 +01:00
if ( ! cdd . toc . tracks [ cdd . toc . last - 1 ] . end )
2012-10-13 19:01:31 +02:00
{
2015-05-31 18:21:35 +02:00
/* set previous track end time (based on current track start time, ignoring any "PREGAP"-type pause if no INDEX00) */
cdd . toc . tracks [ cdd . toc . last - 1 ] . end = cdd . toc . tracks [ cdd . toc . last ] . start ;
2012-10-13 19:01:31 +02:00
}
}
else
{
2015-08-26 23:52:19 +02:00
/* current file start time (based on previous track end time + PREGAP length) */
cdd . toc . tracks [ cdd . toc . last ] . start = cdd . toc . end + pregap ;
2012-10-13 19:01:31 +02:00
2015-05-31 18:21:35 +02:00
/* adjust current track file read offset with previous track end time (only used for AUDIO track) */
2013-06-18 01:31:25 +02:00
cdd . toc . tracks [ cdd . toc . last ] . offset + = cdd . toc . end * 2352 ;
2012-10-13 19:01:31 +02:00
2015-04-26 21:54:22 +02:00
# if defined(USE_LIBTREMOR) || defined(USE_LIBVORBIS)
2013-06-18 01:31:25 +02:00
if ( cdd . toc . tracks [ cdd . toc . last ] . vf . datasource )
{
/* convert read offset to PCM sample offset */
cdd . toc . tracks [ cdd . toc . last ] . offset = cdd . toc . tracks [ cdd . toc . last ] . offset / 4 ;
/* current track end time */
cdd . toc . tracks [ cdd . toc . last ] . end = cdd . toc . tracks [ cdd . toc . last ] . start + ov_pcm_total ( & cdd . toc . tracks [ cdd . toc . last ] . vf , - 1 ) / 588 ;
if ( cdd . toc . tracks [ cdd . toc . last ] . end < = cdd . toc . tracks [ cdd . toc . last ] . start )
{
/* invalid length */
ov_clear ( & cdd . toc . tracks [ cdd . toc . last ] . vf ) ;
cdd . toc . tracks [ cdd . toc . last ] . fd = 0 ;
cdd . toc . tracks [ cdd . toc . last ] . end = 0 ;
cdd . toc . tracks [ cdd . toc . last ] . start = 0 ;
cdd . toc . tracks [ cdd . toc . last ] . offset = 0 ;
break ;
}
2013-07-14 17:05:44 +02:00
# ifdef DISABLE_MANY_OGG_OPEN_FILES
/* close VORBIS file structure to save memory */
ogg_free ( cdd . toc . last ) ;
# endif
2015-05-31 18:21:35 +02:00
}
2013-06-18 01:31:25 +02:00
else
# endif
{
/* current track end time */
2017-06-30 13:42:47 +02:00
cdStreamSeek ( cdd . toc . tracks [ cdd . toc . last ] . fd , 0 , SEEK_END ) ;
2015-05-31 18:21:35 +02:00
if ( cdd . toc . tracks [ cdd . toc . last ] . type )
{
/* DATA track length */
2021-09-28 20:26:13 +02:00
cdd . toc . tracks [ cdd . toc . last ] . end = cdd . toc . tracks [ cdd . toc . last ] . start + ( cdStreamTell ( cdd . toc . tracks [ cdd . toc . last ] . fd ) / cdd . sectorSize ) ;
2015-05-31 18:21:35 +02:00
}
else
{
/* AUDIO track length */
2021-09-28 20:26:13 +02:00
cdd . toc . tracks [ cdd . toc . last ] . end = cdd . toc . tracks [ cdd . toc . last ] . start + ( cdStreamTell ( cdd . toc . tracks [ cdd . toc . last ] . fd ) / 2352 ) ;
2015-05-31 18:21:35 +02:00
}
2017-06-30 13:42:47 +02:00
cdStreamSeek ( cdd . toc . tracks [ cdd . toc . last ] . fd , 0 , SEEK_SET ) ;
2013-06-18 01:31:25 +02:00
}
2012-10-13 19:01:31 +02:00
2015-08-26 23:52:19 +02:00
/* adjust track start time (based on current file start time + index absolute time) */
cdd . toc . tracks [ cdd . toc . last ] . start + = ( bb + ss * 75 + mm * 60 * 75 ) ;
2012-10-13 19:01:31 +02:00
/* update TOC end */
2012-07-15 17:15:01 +02:00
cdd . toc . end = cdd . toc . tracks [ cdd . toc . last ] . end ;
}
2015-05-31 18:21:35 +02:00
2012-10-13 19:01:31 +02:00
/* increment track number */
cdd . toc . last + + ;
2015-05-31 18:21:35 +02:00
/* max. 99 tracks */
if ( cdd . toc . last = = 99 ) break ;
2012-10-13 19:01:31 +02:00
}
}
2015-05-31 18:21:35 +02:00
/* check if last track end time needs to be set */
if ( cdd . toc . last & & ! cdd . toc . tracks [ cdd . toc . last - 1 ] . end )
2012-10-13 19:01:31 +02:00
{
2015-05-31 18:21:35 +02:00
/* adjust TOC end with current file PREGAP length */
2012-10-13 19:01:31 +02:00
cdd . toc . end + = pregap ;
2015-05-31 18:21:35 +02:00
/* last track end time */
2012-10-13 19:01:31 +02:00
cdd . toc . tracks [ cdd . toc . last - 1 ] . end = cdd . toc . end ;
}
2015-05-31 18:21:35 +02:00
/* close any incomplete track file */
# if defined(USE_LIBTREMOR) || defined(USE_LIBVORBIS)
if ( cdd . toc . tracks [ cdd . toc . last ] . vf . datasource )
{
ov_clear ( & cdd . toc . tracks [ cdd . toc . last ] . vf ) ;
}
else
# endif
if ( cdd . toc . tracks [ cdd . toc . last ] . fd )
{
2017-06-30 13:42:47 +02:00
cdStreamClose ( cdd . toc . tracks [ cdd . toc . last ] . fd ) ;
2015-05-31 18:21:35 +02:00
}
/* close CUE file */
2017-06-30 13:42:47 +02:00
cdStreamClose ( fd ) ;
2012-10-13 19:01:31 +02:00
}
2019-11-11 17:31:29 +01:00
else if ( cdd . toc . last )
2012-10-13 19:01:31 +02:00
{
2015-05-31 18:21:35 +02:00
int i , offset = 1 ;
2012-10-13 19:01:31 +02:00
/* set pointer at the end of filename */
2015-05-31 18:21:35 +02:00
ptr = fname + strlen ( fname ) - 4 ;
2012-10-13 19:01:31 +02:00
2015-05-31 18:21:35 +02:00
/* autodetect audio track file extensions */
2013-06-16 23:38:47 +02:00
for ( i = 0 ; i < SUPPORTED_EXT ; i + + )
2012-10-13 19:01:31 +02:00
{
2015-05-31 18:21:35 +02:00
/* auto-detect wrong initial track index */
sprintf ( ptr , extensions [ i ] , cdd . toc . last ) ;
2017-06-30 13:42:47 +02:00
fd = cdStreamOpen ( fname ) ;
2012-10-13 19:01:31 +02:00
if ( fd )
{
offset = 0 ;
break ;
}
2015-05-31 18:21:35 +02:00
sprintf ( ptr , extensions [ i ] , cdd . toc . last + 1 ) ;
2017-06-30 13:42:47 +02:00
fd = cdStreamOpen ( fname ) ;
2015-05-31 18:21:35 +02:00
if ( fd ) break ;
2012-10-13 19:01:31 +02:00
}
/* repeat until no more valid track files can be found */
while ( fd )
{
2019-11-11 17:31:29 +01:00
/* read file header */
unsigned char head [ 12 ] ;
cdStreamRead ( head , 12 , 1 , fd ) ;
2017-06-30 13:42:47 +02:00
cdStreamSeek ( fd , 0 , SEEK_SET ) ;
2019-11-25 19:30:07 +01:00
2019-11-11 17:31:29 +01:00
/* autodetect WAVE file */
if ( ! memcmp ( head , " RIFF " , 4 ) & & ! memcmp ( head + 8 , " WAVE " , 4 ) )
2012-10-13 19:01:31 +02:00
{
2019-11-11 17:31:29 +01:00
/* look for 'data' chunk */
int chunkSize , dataOffset = 0 ;
2019-11-25 17:14:27 +01:00
cdStreamSeek ( fd , 12 , SEEK_SET ) ;
while ( cdStreamRead ( head , 8 , 1 , fd ) )
2016-09-09 16:03:41 +02:00
{
if ( ! memcmp ( head , " data " , 4 ) )
{
2019-11-25 17:14:27 +01:00
dataOffset = cdStreamTell ( fd ) ;
cdStreamSeek ( fd , 0 , SEEK_SET ) ;
2016-09-09 16:03:41 +02:00
break ;
}
2019-11-11 17:31:29 +01:00
chunkSize = head [ 4 ] + ( head [ 5 ] < < 8 ) + ( head [ 6 ] < < 16 ) + ( head [ 7 ] < < 24 ) ;
2019-11-25 17:14:27 +01:00
cdStreamSeek ( fd , chunkSize , SEEK_CUR ) ;
2016-09-09 16:03:41 +02:00
}
/* check if 'data' chunk has not been found */
if ( ! dataOffset )
{
/* invalid WAVE file */
2017-06-30 13:42:47 +02:00
cdStreamClose ( fd ) ;
2016-09-09 16:03:41 +02:00
break ;
}
2012-10-13 19:01:31 +02:00
/* initialize current track file descriptor */
cdd . toc . tracks [ cdd . toc . last ] . fd = fd ;
2013-06-18 01:31:25 +02:00
/* initialize current track start time (based on previous track end time) */
2012-10-13 19:01:31 +02:00
cdd . toc . tracks [ cdd . toc . last ] . start = cdd . toc . end ;
2013-06-16 23:38:47 +02:00
/* add default 2s PAUSE between tracks */
2012-10-13 19:01:31 +02:00
cdd . toc . tracks [ cdd . toc . last ] . start + = 150 ;
2013-06-18 01:31:25 +02:00
/* current track end time */
2017-06-30 13:42:47 +02:00
cdStreamSeek ( fd , 0 , SEEK_END ) ;
cdd . toc . tracks [ cdd . toc . last ] . end = cdd . toc . tracks [ cdd . toc . last ] . start + ( ( cdStreamTell ( fd ) - dataOffset + 2351 ) / 2352 ) ;
2012-10-13 19:01:31 +02:00
/* initialize file read offset for current track */
cdd . toc . tracks [ cdd . toc . last ] . offset = cdd . toc . tracks [ cdd . toc . last ] . start * 2352 ;
/* auto-detect PAUSE within audio files */
2017-06-30 13:42:47 +02:00
cdStreamSeek ( fd , 100 * 2352 , SEEK_SET ) ;
cdStreamRead ( head , 4 , 1 , fd ) ;
cdStreamSeek ( fd , 0 , SEEK_SET ) ;
2012-10-13 19:01:31 +02:00
if ( * ( int32 * ) head = = 0 )
{
/* assume 2s PAUSE is included at the beginning of the file */
cdd . toc . tracks [ cdd . toc . last ] . offset - = 150 * 2352 ;
cdd . toc . tracks [ cdd . toc . last ] . end - = 150 ;
}
/* update TOC end */
cdd . toc . end = cdd . toc . tracks [ cdd . toc . last ] . end ;
/* adjust file read offset for current track with WAVE header length */
2016-09-09 16:03:41 +02:00
cdd . toc . tracks [ cdd . toc . last ] . offset - = dataOffset ;
2012-10-13 19:01:31 +02:00
/* increment track number */
cdd . toc . last + + ;
}
2015-04-26 21:54:22 +02:00
# if defined(USE_LIBTREMOR) || defined(USE_LIBVORBIS)
2017-06-30 13:42:47 +02:00
else if ( ! ov_open_callbacks ( fd , & cdd . toc . tracks [ cdd . toc . last ] . vf , 0 , 0 , cb ) )
2013-06-16 23:38:47 +02:00
{
/* retrieve stream infos */
vorbis_info * info = ov_info ( & cdd . toc . tracks [ cdd . toc . last ] . vf , - 1 ) ;
if ( ! info | | ( info - > rate ! = 44100 ) | | ( info - > channels ! = 2 ) )
{
/* unsupported OGG file */
ov_clear ( & cdd . toc . tracks [ cdd . toc . last ] . vf ) ;
break ;
}
/* initialize current track file descriptor */
cdd . toc . tracks [ cdd . toc . last ] . fd = fd ;
2013-06-18 01:31:25 +02:00
/* initialize current track start time (based on previous track end time) */
2013-06-16 23:38:47 +02:00
cdd . toc . tracks [ cdd . toc . last ] . start = cdd . toc . end ;
/* add default 2s PAUSE between tracks */
cdd . toc . tracks [ cdd . toc . last ] . start + = 150 ;
2013-06-18 01:31:25 +02:00
/* current track end time */
2015-05-31 18:21:35 +02:00
cdd . toc . tracks [ cdd . toc . last ] . end = cdd . toc . tracks [ cdd . toc . last ] . start + ( ( ov_pcm_total ( & cdd . toc . tracks [ cdd . toc . last ] . vf , - 1 ) + 587 ) / 588 ) ;
2013-06-16 23:38:47 +02:00
if ( cdd . toc . tracks [ cdd . toc . last ] . end < = cdd . toc . tracks [ cdd . toc . last ] . start )
{
2013-06-18 01:31:25 +02:00
/* invalid file length */
2013-06-16 23:38:47 +02:00
ov_clear ( & cdd . toc . tracks [ cdd . toc . last ] . vf ) ;
cdd . toc . tracks [ cdd . toc . last ] . fd = 0 ;
cdd . toc . tracks [ cdd . toc . last ] . end = 0 ;
cdd . toc . tracks [ cdd . toc . last ] . start = 0 ;
break ;
}
2015-05-08 15:53:27 +02:00
/* initialize file read offset for current track */
cdd . toc . tracks [ cdd . toc . last ] . offset = cdd . toc . tracks [ cdd . toc . last ] . start * 588 ;
2013-06-16 23:38:47 +02:00
/* auto-detect PAUSE within audio files */
ov_pcm_seek ( & cdd . toc . tracks [ cdd . toc . last ] . vf , 100 * 588 ) ;
2015-04-26 21:54:22 +02:00
# if defined(USE_LIBVORBIS)
ov_read ( & cdd . toc . tracks [ cdd . toc . last ] . vf , ( char * ) head , 32 , 0 , 2 , 1 , 0 ) ;
# else
2013-06-16 23:38:47 +02:00
ov_read ( & cdd . toc . tracks [ cdd . toc . last ] . vf , ( char * ) head , 32 , 0 ) ;
2015-04-26 21:54:22 +02:00
# endif
2013-06-18 01:31:25 +02:00
ov_pcm_seek ( & cdd . toc . tracks [ cdd . toc . last ] . vf , 0 ) ;
2013-06-16 23:38:47 +02:00
if ( * ( int32 * ) head = = 0 )
{
/* assume 2s PAUSE is included at the beginning of the file */
cdd . toc . tracks [ cdd . toc . last ] . offset - = 150 * 588 ;
cdd . toc . tracks [ cdd . toc . last ] . end - = 150 ;
}
2013-07-14 17:05:44 +02:00
# ifdef DISABLE_MANY_OGG_OPEN_FILES
/* close VORBIS file structure to save memory */
ogg_free ( cdd . toc . last ) ;
# endif
2013-06-16 23:38:47 +02:00
/* update TOC end */
cdd . toc . end = cdd . toc . tracks [ cdd . toc . last ] . end ;
/* increment track number */
cdd . toc . last + + ;
}
# endif
2012-10-13 19:01:31 +02:00
else
{
2013-06-16 23:38:47 +02:00
/* unsupported audio file format */
2017-06-30 13:42:47 +02:00
cdStreamClose ( fd ) ;
2012-10-13 19:01:31 +02:00
break ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
2012-10-13 19:01:31 +02:00
2015-05-31 18:21:35 +02:00
/* max. 99 tracks */
if ( cdd . toc . last = = 99 ) break ;
2012-10-13 19:01:31 +02:00
/* try to open next audio track file */
sprintf ( ptr , extensions [ i ] , cdd . toc . last + offset ) ;
2017-06-30 13:42:47 +02:00
fd = cdStreamOpen ( fname ) ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
2015-05-31 18:21:35 +02:00
2019-11-25 19:30:07 +01:00
/* Valid CD-ROM Mode 1 track found ? */
if ( cdd . toc . tracks [ 0 ] . type = = TYPE_MODE1 )
2012-10-13 19:01:31 +02:00
{
2015-05-31 18:21:35 +02:00
/* simulate audio tracks if none found */
if ( cdd . toc . last = = 1 )
2012-10-13 19:01:31 +02:00
{
2015-05-31 18:21:35 +02:00
/* some games require exact TOC infos */
if ( strstr ( header + 0x180 , " T-95035 " ) ! = NULL )
{
/* Snatcher */
cdd . toc . last = cdd . toc . end = 0 ;
do
{
cdd . toc . tracks [ cdd . toc . last ] . start = cdd . toc . end ;
cdd . toc . tracks [ cdd . toc . last ] . end = cdd . toc . tracks [ cdd . toc . last ] . start + toc_snatcher [ cdd . toc . last ] ;
cdd . toc . end = cdd . toc . tracks [ cdd . toc . last ] . end ;
cdd . toc . last + + ;
}
while ( cdd . toc . last < 21 ) ;
}
else if ( strstr ( header + 0x180 , " T-127015 " ) ! = NULL )
{
/* Lunar - The Silver Star */
cdd . toc . last = cdd . toc . end = 0 ;
do
{
cdd . toc . tracks [ cdd . toc . last ] . start = cdd . toc . end ;
cdd . toc . tracks [ cdd . toc . last ] . end = cdd . toc . tracks [ cdd . toc . last ] . start + toc_lunar [ cdd . toc . last ] ;
cdd . toc . end = cdd . toc . tracks [ cdd . toc . last ] . end ;
cdd . toc . last + + ;
}
while ( cdd . toc . last < 52 ) ;
}
else if ( strstr ( header + 0x180 , " T-113045 " ) ! = NULL )
{
/* Shadow of the Beast II */
cdd . toc . last = cdd . toc . end = 0 ;
do
{
cdd . toc . tracks [ cdd . toc . last ] . start = cdd . toc . end ;
cdd . toc . tracks [ cdd . toc . last ] . end = cdd . toc . tracks [ cdd . toc . last ] . start + toc_shadow [ cdd . toc . last ] ;
cdd . toc . end = cdd . toc . tracks [ cdd . toc . last ] . end ;
cdd . toc . last + + ;
}
while ( cdd . toc . last < 15 ) ;
}
else if ( strstr ( header + 0x180 , " T-143025 " ) ! = NULL )
{
/* Dungeon Explorer */
cdd . toc . last = cdd . toc . end = 0 ;
do
{
cdd . toc . tracks [ cdd . toc . last ] . start = cdd . toc . end ;
cdd . toc . tracks [ cdd . toc . last ] . end = cdd . toc . tracks [ cdd . toc . last ] . start + toc_dungeon [ cdd . toc . last ] ;
cdd . toc . end = cdd . toc . tracks [ cdd . toc . last ] . end ;
cdd . toc . last + + ;
}
while ( cdd . toc . last < 13 ) ;
}
else if ( strstr ( header + 0x180 , " MK-4410 " ) ! = NULL )
{
/* Final Fight CD (USA, Europe) */
cdd . toc . last = cdd . toc . end = 0 ;
do
{
cdd . toc . tracks [ cdd . toc . last ] . start = cdd . toc . end ;
cdd . toc . tracks [ cdd . toc . last ] . end = cdd . toc . tracks [ cdd . toc . last ] . start + toc_ffight [ cdd . toc . last ] ;
cdd . toc . end = cdd . toc . tracks [ cdd . toc . last ] . end ;
cdd . toc . last + + ;
}
while ( cdd . toc . last < 26 ) ;
}
else if ( strstr ( header + 0x180 , " G-6013 " ) ! = NULL )
{
/* Final Fight CD (Japan) */
cdd . toc . last = cdd . toc . end = 0 ;
do
{
cdd . toc . tracks [ cdd . toc . last ] . start = cdd . toc . end ;
cdd . toc . tracks [ cdd . toc . last ] . end = cdd . toc . tracks [ cdd . toc . last ] . start + toc_ffightj [ cdd . toc . last ] ;
cdd . toc . end = cdd . toc . tracks [ cdd . toc . last ] . end ;
cdd . toc . last + + ;
}
while ( cdd . toc . last < 29 ) ;
}
2020-07-12 16:56:03 +02:00
else if ( strstr ( header + 0x180 , " T-06201-01 " ) ! = NULL )
{
/* Sewer Shark (USA) (REV1) */
/* no audio track */
}
2015-05-31 18:21:35 +02:00
else
{
/* default TOC (99 tracks & 2s per audio tracks) */
do
{
cdd . toc . tracks [ cdd . toc . last ] . start = cdd . toc . end + 2 * 75 ;
cdd . toc . tracks [ cdd . toc . last ] . end = cdd . toc . tracks [ cdd . toc . last ] . start + 2 * 75 ;
cdd . toc . end = cdd . toc . tracks [ cdd . toc . last ] . end ;
cdd . toc . last + + ;
}
while ( ( cdd . toc . last < 99 ) & & ( cdd . toc . end < 56 * 60 * 75 ) ) ;
}
2012-10-13 19:01:31 +02:00
}
}
2020-07-12 16:56:03 +02:00
}
/* CD tracks found ? */
if ( cdd . toc . last )
{
/* Lead-out */
cdd . toc . tracks [ cdd . toc . last ] . start = cdd . toc . end ;
/* CD mounted */
2021-09-13 19:32:52 +02:00
cdd . loaded = isMSDfile ? HW_ADDON_MEGASD : HW_ADDON_MEGACD ;
2020-07-12 16:56:03 +02:00
2015-05-31 18:21:35 +02:00
/* Automatically try to open associated subcode data file */
2019-03-23 14:32:34 +01:00
memcpy ( & fname [ strlen ( fname ) - 4 ] , " .sub " , 4 ) ;
2017-06-30 13:42:47 +02:00
cdd . toc . sub = cdStreamOpen ( fname ) ;
2012-10-22 16:08:21 +02:00
2015-05-31 18:21:35 +02:00
/* return 1 if loaded file is CD image file */
return ( isCDfile ) ;
}
/* no CD image file loaded */
return 0 ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
void cdd_unload ( void )
{
if ( cdd . loaded )
{
int i ;
2017-08-27 16:42:31 +02:00
# if defined(USE_LIBCHDR)
chd_close ( cdd . chd . file ) ;
if ( cdd . chd . hunk )
free ( cdd . chd . hunk ) ;
# endif
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
/* close CD tracks */
for ( i = 0 ; i < cdd . toc . last ; i + + )
{
2015-04-26 21:54:22 +02:00
# if defined(USE_LIBTREMOR) || defined(USE_LIBVORBIS)
2013-06-16 23:38:47 +02:00
if ( cdd . toc . tracks [ i ] . vf . datasource )
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2015-05-31 18:21:35 +02:00
/* close any opened VORBIS file */
2013-06-16 23:38:47 +02:00
ov_clear ( & cdd . toc . tracks [ i ] . vf ) ;
}
else
# endif
2013-07-14 17:05:44 +02:00
if ( cdd . toc . tracks [ i ] . fd )
2013-06-16 23:38:47 +02:00
{
2015-05-31 18:21:35 +02:00
/* check if single file is used for consecutive tracks */
if ( ( i > 0 ) & & ( cdd . toc . tracks [ i ] . fd = = cdd . toc . tracks [ i - 1 ] . fd ) )
2013-07-14 17:05:44 +02:00
{
2015-05-31 18:21:35 +02:00
/* skip track */
i + + ;
}
else
{
/* close file */
2017-06-30 13:42:47 +02:00
cdStreamClose ( cdd . toc . tracks [ i ] . fd ) ;
2012-10-13 19:01:31 +02:00
}
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
}
2015-05-31 18:21:35 +02:00
/* close any opened subcode file */
2017-08-27 16:42:31 +02:00
if ( cdd . toc . sub )
cdStreamClose ( cdd . toc . sub ) ;
2015-05-31 18:21:35 +02:00
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
/* CD unloaded */
cdd . loaded = 0 ;
}
2012-07-15 17:15:01 +02:00
/* reset TOC */
memset ( & cdd . toc , 0x00 , sizeof ( cdd . toc ) ) ;
2018-06-27 01:42:03 +02:00
# if defined(USE_LIBCHDR)
/* reset CHD data */
memset ( & cdd . chd , 0x00 , sizeof ( cdd . chd ) ) ;
# endif
2015-05-31 18:21:35 +02:00
/* no CD-ROM track */
2012-07-15 17:15:01 +02:00
cdd . sectorSize = 0 ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
2019-11-25 19:30:07 +01:00
void cdd_read_data ( uint8 * dst , uint8 * subheader )
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2015-05-31 18:21:35 +02:00
/* only allow reading (first) CD-ROM track sectors */
if ( cdd . toc . tracks [ cdd . index ] . type & & ( cdd . lba > = 0 ) )
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2017-08-27 16:42:31 +02:00
# if defined(USE_LIBCHDR)
if ( cdd . chd . file )
{
/* CHD file offset */
int offset = cdd . toc . tracks [ 0 ] . offset + ( cdd . lba * CD_FRAME_SIZE ) ;
/* CHD hunk index */
int hunknum = offset / cdd . chd . hunkbytes ;
/* update CHD hunk cache if necessary */
if ( hunknum ! = cdd . chd . hunknum )
{
chd_read ( cdd . chd . file , hunknum , cdd . chd . hunk ) ;
cdd . chd . hunknum = hunknum ;
}
2019-11-25 19:30:07 +01:00
/* check sector size */
2017-09-23 00:14:43 +02:00
if ( cdd . sectorSize = = 2048 )
{
2019-11-25 19:30:07 +01:00
/* read Mode 1 user data (2048 bytes) */
2017-09-23 00:14:43 +02:00
memcpy ( dst , cdd . chd . hunk + ( offset % cdd . chd . hunkbytes ) , 2048 ) ;
}
else
{
2019-11-25 19:30:07 +01:00
/* check if sub-header is required (Mode 2 sector only) */
if ( ! subheader )
{
/* read Mode 1 user data (2048 bytes), skipping block sync pattern (12 bytes) + block header (4 bytes)*/
memcpy ( dst , cdd . chd . hunk + ( offset % cdd . chd . hunkbytes ) + 12 + 4 , 2048 ) ;
}
else
{
/* read Mode 2 sub-header (first 4 bytes), skipping block sync pattern (12 bytes) + block header (4 bytes)*/
memcpy ( subheader , cdd . chd . hunk + ( offset % cdd . chd . hunkbytes ) + 12 + 4 , 4 ) ;
/* read Mode 2 user data (max 2328 bytes), skipping Mode 2 sub-header (8 bytes) */
memcpy ( dst , cdd . chd . hunk + ( offset % cdd . chd . hunkbytes ) + 12 + 4 + 8 , 2328 ) ;
}
2017-09-23 00:14:43 +02:00
}
2017-08-27 16:42:31 +02:00
return ;
}
# endif
2019-11-25 19:30:07 +01:00
/* check sector size */
2015-05-31 18:21:35 +02:00
if ( cdd . sectorSize = = 2048 )
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2019-11-25 19:30:07 +01:00
/* read Mode 1 user data (2048 bytes) */
2017-06-30 13:42:47 +02:00
cdStreamSeek ( cdd . toc . tracks [ 0 ] . fd , cdd . lba * 2048 , SEEK_SET ) ;
2019-11-25 19:30:07 +01:00
cdStreamRead ( dst , 2048 , 1 , cdd . toc . tracks [ 0 ] . fd ) ;
2015-05-31 18:21:35 +02:00
}
else
{
2019-11-25 19:30:07 +01:00
/* check if sub-header is required (Mode 2 sector only) */
if ( ! subheader )
{
/* skip block sync pattern (12 bytes) + block header (4 bytes) then read Mode 1 user data (2048 bytes) */
cdStreamSeek ( cdd . toc . tracks [ 0 ] . fd , ( cdd . lba * 2352 ) + 12 + 4 , SEEK_SET ) ;
cdStreamRead ( dst , 2048 , 1 , cdd . toc . tracks [ 0 ] . fd ) ;
}
else
{
/* skip block sync pattern (12 bytes) + block header (4 bytes) + Mode 2 sub-header (first 4 bytes) then read Mode 2 sub-header (last 4 bytes) */
cdStreamSeek ( cdd . toc . tracks [ 0 ] . fd , ( cdd . lba * 2352 ) + 12 + 4 + 4 , SEEK_SET ) ;
cdStreamRead ( subheader , 4 , 1 , cdd . toc . tracks [ 0 ] . fd ) ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
2019-11-25 19:30:07 +01:00
/* read Mode 2 user data (max 2328 bytes) */
cdStreamRead ( dst , 2328 , 1 , cdd . toc . tracks [ 0 ] . fd ) ;
}
}
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
}
2021-09-09 00:54:45 +02:00
void cdd_seek_audio ( int index , int lba )
{
# if defined(USE_LIBTREMOR) || defined(USE_LIBVORBIS)
# ifdef DISABLE_MANY_OGG_OPEN_FILES
/* check if track index has changed */
if ( index ! = cdd . index )
{
/* close previous track VORBIS file structure to save memory */
if ( cdd . toc . tracks [ cdd . index ] . vf . datasource )
{
ogg_free ( cdd . index ) ;
}
/* open current track VORBIS file */
if ( cdd . toc . tracks [ index ] . vf . seekable )
{
ov_open_callbacks ( cdd . toc . tracks [ index ] . fd , & cdd . toc . tracks [ index ] . vf , 0 , 0 , cb ) ;
}
}
# endif
# endif
/* seek to track position */
# if defined(USE_LIBCHDR)
if ( cdd . chd . file )
{
/* CHD file offset */
cdd . chd . hunkofs = cdd . toc . tracks [ index ] . offset + ( lba * CD_FRAME_SIZE ) ;
}
else
# endif
# if defined(USE_LIBTREMOR) || defined(USE_LIBVORBIS)
if ( cdd . toc . tracks [ index ] . vf . seekable )
{
/* VORBIS AUDIO track */
ov_pcm_seek ( & cdd . toc . tracks [ index ] . vf , ( lba * 588 ) - cdd . toc . tracks [ index ] . offset ) ;
}
else
# endif
if ( cdd . toc . tracks [ index ] . fd )
{
/* PCM AUDIO track */
cdStreamSeek ( cdd . toc . tracks [ index ] . fd , ( lba * 2352 ) - cdd . toc . tracks [ index ] . offset , SEEK_SET ) ;
}
}
2012-10-13 19:01:31 +02:00
void cdd_read_audio ( unsigned int samples )
{
/* previous audio outputs */
2016-12-18 23:09:16 +01:00
int prev_l = cdd . audio [ 0 ] ;
int prev_r = cdd . audio [ 1 ] ;
2012-10-13 19:01:31 +02:00
/* audio track playing ? */
if ( ! scd . regs [ 0x36 > > 1 ] . byte . h & & cdd . toc . tracks [ cdd . index ] . fd )
{
2016-12-18 23:09:16 +01:00
int i , mul , l , r ;
2012-10-13 19:01:31 +02:00
/* current CD-DA fader volume */
2018-08-30 18:37:12 +02:00
int curVol = cdd . fader [ 0 ] ;
2012-10-13 19:01:31 +02:00
/* CD-DA fader volume setup (0-1024) */
2018-08-30 18:37:12 +02:00
int endVol = cdd . fader [ 1 ] ;
2012-10-13 19:01:31 +02:00
/* read samples from current block */
2017-08-27 16:42:31 +02:00
# if defined(USE_LIBCHDR)
if ( cdd . chd . file )
{
# ifndef LSB_FIRST
int16 * ptr = ( int16 * ) ( cdd . chd . hunk + ( cdd . chd . hunkofs % cdd . chd . hunkbytes ) ) ;
# else
uint8 * ptr = cdd . chd . hunk + ( cdd . chd . hunkofs % cdd . chd . hunkbytes ) ;
# endif
/* process 16-bit (big-endian) stereo samples */
for ( i = 0 ; i < samples ; i + + )
{
/* CHD hunk index */
int hunknum = cdd . chd . hunkofs / cdd . chd . hunkbytes ;
/* update CHD hunk cache if necessary */
if ( hunknum ! = cdd . chd . hunknum )
{
chd_read ( cdd . chd . file , hunknum , cdd . chd . hunk ) ;
cdd . chd . hunknum = hunknum ;
}
/* CD-DA fader multiplier (cf. LC7883 datasheet) */
/* (MIN) 0,1,2,3,4,8,12,16,20...,1020,1024 (MAX) */
mul = ( curVol & 0x7fc ) ? ( curVol & 0x7fc ) : ( curVol & 0x03 ) ;
/* left & right channels */
# ifndef LSB_FIRST
l = ( ( ptr [ 0 ] * mul ) / 1024 ) ;
r = ( ( ptr [ 1 ] * mul ) / 1024 ) ;
ptr + = 2 ;
# else
l = ( ( ( int16 ) ( ( ptr [ 1 ] + ptr [ 0 ] * 256 ) ) * mul ) / 1024 ) ;
r = ( ( ( int16 ) ( ( ptr [ 3 ] + ptr [ 2 ] * 256 ) ) * mul ) / 1024 ) ;
ptr + = 4 ;
# endif
2021-10-07 23:20:31 +02:00
/* CD-DA output mixing volume (0-100%) */
l = ( l * config . cdda_volume ) / 100 ;
r = ( r * config . cdda_volume ) / 100 ;
/* update blip buffer */
2017-08-27 16:42:31 +02:00
blip_add_delta_fast ( snd . blips [ 2 ] , i , l - prev_l , r - prev_r ) ;
prev_l = l ;
prev_r = r ;
/* update CHD file offset */
cdd . chd . hunkofs + = 4 ;
/* detect end of sector data (2352 bytes) */
if ( ( cdd . chd . hunkofs % CD_FRAME_SIZE ) = = CD_MAX_SECTOR_DATA )
{
/* skip subcode data (96 bytes) */
cdd . chd . hunkofs + = CD_MAX_SUBCODE_DATA ;
/* reinitialize hunk cache pointer */
# ifndef LSB_FIRST
ptr = ( int16 * ) ( cdd . chd . hunk + ( cdd . chd . hunkofs % cdd . chd . hunkbytes ) ) ;
# else
ptr = cdd . chd . hunk + ( cdd . chd . hunkofs % cdd . chd . hunkbytes ) ;
# endif
}
/* update CD-DA fader volume (one step/sample) */
if ( curVol < endVol )
{
/* fade-in */
curVol + + ;
}
else if ( curVol > endVol )
{
/* fade-out */
curVol - - ;
}
else if ( ! curVol )
{
/* audio will remain muted until next setup */
break ;
}
}
}
else
# endif
2015-04-26 21:54:22 +02:00
# if defined(USE_LIBTREMOR) || defined(USE_LIBVORBIS)
2013-06-16 23:38:47 +02:00
if ( cdd . toc . tracks [ cdd . index ] . vf . datasource )
2012-10-13 19:01:31 +02:00
{
2013-06-16 23:38:47 +02:00
int len , done = 0 ;
int16 * ptr = ( int16 * ) ( cdc . ram ) ;
samples = samples * 4 ;
while ( done < samples )
{
2015-04-26 21:54:22 +02:00
# ifdef USE_LIBVORBIS
len = ov_read ( & cdd . toc . tracks [ cdd . index ] . vf , ( char * ) ( cdc . ram + done ) , samples - done , 0 , 2 , 1 , 0 ) ;
# else
2013-06-16 23:38:47 +02:00
len = ov_read ( & cdd . toc . tracks [ cdd . index ] . vf , ( char * ) ( cdc . ram + done ) , samples - done , 0 ) ;
2015-04-26 21:54:22 +02:00
# endif
2013-06-16 23:38:47 +02:00
if ( len < = 0 )
{
done = samples ;
break ;
}
done + = len ;
}
samples = done / 4 ;
2012-10-13 19:01:31 +02:00
2013-06-16 23:38:47 +02:00
/* process 16-bit (host-endian) stereo samples */
for ( i = 0 ; i < samples ; i + + )
{
/* CD-DA fader multiplier (cf. LC7883 datasheet) */
/* (MIN) 0,1,2,3,4,8,12,16,20...,1020,1024 (MAX) */
mul = ( curVol & 0x7fc ) ? ( curVol & 0x7fc ) : ( curVol & 0x03 ) ;
2016-12-18 23:09:16 +01:00
/* left & right channels */
l = ( ( ptr [ 0 ] * mul ) / 1024 ) ;
r = ( ( ptr [ 1 ] * mul ) / 1024 ) ;
2021-10-07 23:20:31 +02:00
/* CD-DA output mixing volume (0-100%) */
l = ( l * config . cdda_volume ) / 100 ;
r = ( r * config . cdda_volume ) / 100 ;
/* update blip buffer */
2016-12-18 23:09:16 +01:00
blip_add_delta_fast ( snd . blips [ 2 ] , i , l - prev_l , r - prev_r ) ;
prev_l = l ;
prev_r = r ;
ptr + = 2 ;
2013-06-16 23:38:47 +02:00
/* update CD-DA fader volume (one step/sample) */
if ( curVol < endVol )
{
/* fade-in */
curVol + + ;
}
else if ( curVol > endVol )
{
/* fade-out */
curVol - - ;
}
else if ( ! curVol )
{
/* audio will remain muted until next setup */
break ;
}
}
}
else
2012-10-13 19:01:31 +02:00
# endif
2013-06-16 23:38:47 +02:00
{
2012-10-13 19:01:31 +02:00
# ifdef LSB_FIRST
2013-06-16 23:38:47 +02:00
int16 * ptr = ( int16 * ) ( cdc . ram ) ;
2012-10-13 19:01:31 +02:00
# else
2013-06-16 23:38:47 +02:00
uint8 * ptr = cdc . ram ;
2012-10-13 19:01:31 +02:00
# endif
2017-06-30 13:42:47 +02:00
cdStreamRead ( cdc . ram , 1 , samples * 4 , cdd . toc . tracks [ cdd . index ] . fd ) ;
2012-10-13 19:01:31 +02:00
2013-06-16 23:38:47 +02:00
/* process 16-bit (little-endian) stereo samples */
for ( i = 0 ; i < samples ; i + + )
2012-10-15 10:15:52 +02:00
{
2013-06-16 23:38:47 +02:00
/* CD-DA fader multiplier (cf. LC7883 datasheet) */
/* (MIN) 0,1,2,3,4,8,12,16,20...,1020,1024 (MAX) */
mul = ( curVol & 0x7fc ) ? ( curVol & 0x7fc ) : ( curVol & 0x03 ) ;
2016-12-18 23:09:16 +01:00
/* left & right channels */
2015-04-26 21:54:22 +02:00
# ifdef LSB_FIRST
2016-12-18 23:09:16 +01:00
l = ( ( ptr [ 0 ] * mul ) / 1024 ) ;
r = ( ( ptr [ 1 ] * mul ) / 1024 ) ;
ptr + = 2 ;
2015-04-26 21:54:22 +02:00
# else
2016-12-18 23:09:16 +01:00
l = ( ( ( int16 ) ( ( ptr [ 0 ] + ptr [ 1 ] * 256 ) ) * mul ) / 1024 ) ;
r = ( ( ( int16 ) ( ( ptr [ 2 ] + ptr [ 3 ] * 256 ) ) * mul ) / 1024 ) ;
ptr + = 4 ;
2015-04-26 21:54:22 +02:00
# endif
2021-10-07 23:20:31 +02:00
/* CD-DA output mixing volume (0-100%) */
l = ( l * config . cdda_volume ) / 100 ;
r = ( r * config . cdda_volume ) / 100 ;
/* update blip buffer */
2016-12-18 23:09:16 +01:00
blip_add_delta_fast ( snd . blips [ 2 ] , i , l - prev_l , r - prev_r ) ;
prev_l = l ;
prev_r = r ;
2013-06-16 23:38:47 +02:00
/* update CD-DA fader volume (one step/sample) */
if ( curVol < endVol )
{
/* fade-in */
curVol + + ;
}
else if ( curVol > endVol )
{
/* fade-out */
curVol - - ;
}
else if ( ! curVol )
{
/* audio will remain muted until next setup */
break ;
}
2012-10-15 10:15:52 +02:00
}
2012-10-13 19:01:31 +02:00
}
/* save current CD-DA fader volume */
2018-08-30 18:37:12 +02:00
cdd . fader [ 0 ] = curVol ;
2012-10-13 19:01:31 +02:00
/* save last audio output for next frame */
2016-12-18 23:09:16 +01:00
cdd . audio [ 0 ] = prev_l ;
cdd . audio [ 1 ] = prev_r ;
2012-10-13 19:01:31 +02:00
}
else
{
/* no audio output */
2016-12-18 23:09:16 +01:00
if ( prev_l | prev_r )
{
2021-10-07 23:20:31 +02:00
/* update blip buffer */
2016-12-18 23:09:16 +01:00
blip_add_delta_fast ( snd . blips [ 2 ] , 0 , - prev_l , - prev_r ) ;
2012-10-13 19:01:31 +02:00
2016-12-18 23:09:16 +01:00
/* save audio output for next frame */
cdd . audio [ 0 ] = 0 ;
cdd . audio [ 1 ] = 0 ;
}
2012-10-13 19:01:31 +02:00
}
2021-10-07 23:20:31 +02:00
/* end of blip buffer timeframe */
2016-12-18 23:09:16 +01:00
blip_end_frame ( snd . blips [ 2 ] , samples ) ;
2012-10-13 19:01:31 +02:00
}
2021-09-28 20:26:13 +02:00
void cdd_update_audio ( unsigned int samples )
{
/* get number of internal clocks (CD-DA samples) needed */
samples = blip_clocks_needed ( snd . blips [ 2 ] , samples ) ;
if ( cart . special & HW_MEGASD )
{
/* MegaSD add-on specific CD-DA processing */
megasd_update_cdda ( samples ) ;
}
else
{
/* read needed CD-DA samples */
cdd_read_audio ( samples ) ;
}
}
2015-05-31 18:21:35 +02:00
static void cdd_read_subcode ( void )
{
uint8 subc [ 96 ] ;
int i , j , index ;
/* update subcode buffer pointer address */
scd . regs [ 0x68 > > 1 ] . byte . l = ( scd . regs [ 0x68 > > 1 ] . byte . l + 98 ) & 0x7e ;
/* 16-bit register index */
index = ( scd . regs [ 0x68 > > 1 ] . byte . l + 0x100 ) > > 1 ;
/* read interleaved subcode data from .sub file (12 x 8-bit of P subchannel first, then Q subchannel, etc) */
2017-06-30 13:42:47 +02:00
cdStreamRead ( subc , 1 , 96 , cdd . toc . sub ) ;
2015-05-31 18:21:35 +02:00
/* convert back to raw subcode format (96 bytes with 8 x P-W subchannel bits per byte) */
for ( i = 0 ; i < 96 ; i + = 2 )
{
int code = 0 ;
for ( j = 0 ; j < 8 ; j + + )
{
int bits = ( subc [ ( j * 12 ) + ( i / 8 ) ] > > ( 6 - ( i & 6 ) ) ) & 3 ;
code | = ( ( bits & 1 ) < < ( 7 - j ) ) ;
code | = ( ( bits > > 1 ) < < ( 15 - j ) ) ;
}
/* subcode buffer is accessed as 16-bit words */
scd . regs [ index ] . w = code ;
/* subcode buffer is limited to 64 x 16-bit words */
index = ( index + 1 ) & 0xbf ;
}
/* level 6 interrupt enabled ? */
if ( scd . regs [ 0x32 > > 1 ] . byte . l & 0x40 )
{
/* trigger level 6 interrupt */
scd . pending | = ( 1 < < 6 ) ;
/* update IRQ level */
s68k_update_irq ( ( scd . pending & scd . regs [ 0x32 > > 1 ] . byte . l ) > > 1 ) ;
}
}
2012-10-13 19:01:31 +02:00
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
void cdd_update ( void )
{
# ifdef LOG_CDD
2017-08-27 16:42:31 +02:00
error ( " LBA = %d (track %d)(latency=%d) \n " , cdd . lba , cdd . index , cdd . latency ) ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
# endif
2015-08-26 23:33:20 +02:00
2020-04-04 20:20:36 +02:00
/* drive latency */
if ( cdd . latency > 0 )
2013-04-28 20:47:52 +02:00
{
2020-04-04 20:20:36 +02:00
cdd . latency - - ;
return ;
2013-04-28 20:47:52 +02:00
}
2012-10-13 19:01:31 +02:00
/* reading disc */
2020-04-04 20:20:36 +02:00
if ( cdd . status = = CD_PLAY )
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2015-05-31 18:21:35 +02:00
/* end of disc detection */
if ( cdd . index > = cdd . toc . last )
{
cdd . status = CD_END ;
return ;
}
/* subcode data processing */
if ( cdd . toc . sub )
{
cdd_read_subcode ( ) ;
}
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
/* track type */
2015-05-31 18:21:35 +02:00
if ( cdd . toc . tracks [ cdd . index ] . type )
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2019-11-25 19:30:07 +01:00
/* CD-ROM sector header */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
uint8 header [ 4 ] ;
uint32 msf = cdd . lba + 150 ;
header [ 0 ] = lut_BCD_8 [ ( msf / 75 ) / 60 ] ;
header [ 1 ] = lut_BCD_8 [ ( msf / 75 ) % 60 ] ;
header [ 2 ] = lut_BCD_8 [ ( msf % 75 ) ] ;
2019-11-25 19:30:07 +01:00
header [ 3 ] = cdd . toc . tracks [ cdd . index ] . type ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
2015-05-31 18:21:35 +02:00
/* decode CD-ROM track sector */
cdc_decoder_update ( * ( uint32 * ) ( header ) ) ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
2015-05-31 18:21:35 +02:00
else
2012-10-13 19:01:31 +02:00
{
/* check against audio track start index */
if ( cdd . lba > = cdd . toc . tracks [ cdd . index ] . start )
{
/* audio track playing */
scd . regs [ 0x36 > > 1 ] . byte . h = 0x00 ;
}
/* audio blocks are still sent to CDC as well as CD DAC/Fader */
cdc_decoder_update ( 0 ) ;
}
2015-05-31 18:21:35 +02:00
/* read next sector */
cdd . lba + + ;
2012-10-13 19:01:31 +02:00
/* check end of current track */
if ( cdd . lba > = cdd . toc . tracks [ cdd . index ] . end )
{
2021-09-09 00:54:45 +02:00
/* seek to next track start (assuming it can only be an audio track) */
cdd_seek_audio ( cdd . index + 1 , cdd . toc . tracks [ cdd . index + 1 ] . start ) ;
/* increment current track index */
2012-10-13 19:01:31 +02:00
cdd . index + + ;
/* PAUSE between tracks */
scd . regs [ 0x36 > > 1 ] . byte . h = 0x01 ;
}
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
2024-02-06 00:27:25 +01:00
else
{
/* CDC decoder is still running while disc is not being read (fixes MCD-verificator CDC Flags Test #30) */
cdc_decoder_update ( 0 ) ;
}
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
2012-10-13 19:01:31 +02:00
/* scanning disc */
2024-02-06 00:27:25 +01:00
if ( cdd . status = = CD_SCAN )
2012-07-15 17:15:01 +02:00
{
2021-09-09 00:54:45 +02:00
/* current track index */
int index = cdd . index ;
2012-10-13 19:01:31 +02:00
/* fast-forward or fast-rewind */
2012-07-15 17:15:01 +02:00
cdd . lba + = cdd . scanOffset ;
/* check current track limits */
2021-09-09 00:54:45 +02:00
if ( cdd . lba > = cdd . toc . tracks [ index ] . end )
2012-07-15 17:15:01 +02:00
{
/* next track */
2021-09-09 00:54:45 +02:00
index + + ;
2012-10-13 19:01:31 +02:00
2015-05-31 18:21:35 +02:00
/* check disc limits */
2021-09-09 00:54:45 +02:00
if ( index < cdd . toc . last )
2013-06-16 23:38:47 +02:00
{
2015-05-31 18:21:35 +02:00
/* skip directly to next track start position */
2021-09-09 00:54:45 +02:00
cdd . lba = cdd . toc . tracks [ index ] . start ;
2015-05-31 18:21:35 +02:00
}
else
{
/* end of disc */
cdd . lba = cdd . toc . end ;
2021-09-09 00:54:45 +02:00
cdd . index = cdd . toc . last ;
2015-05-31 18:21:35 +02:00
cdd . status = CD_END ;
2021-09-09 00:54:45 +02:00
/* no audio track playing */
2015-05-31 18:21:35 +02:00
scd . regs [ 0x36 > > 1 ] . byte . h = 0x01 ;
return ;
2013-06-16 23:38:47 +02:00
}
2012-07-15 17:15:01 +02:00
}
2021-09-09 00:54:45 +02:00
else if ( cdd . lba < cdd . toc . tracks [ index ] . start )
2012-07-15 17:15:01 +02:00
{
2015-05-31 18:21:35 +02:00
/* check disc limits */
2021-09-09 00:54:45 +02:00
if ( index > 0 )
2015-05-31 18:21:35 +02:00
{
/* previous track */
2021-09-09 00:54:45 +02:00
index - - ;
2012-10-13 19:01:31 +02:00
2015-05-31 18:21:35 +02:00
/* skip directly to previous track end position */
2021-09-09 00:54:45 +02:00
cdd . lba = cdd . toc . tracks [ index ] . end ;
2015-05-31 18:21:35 +02:00
}
else
{
/* start of first track */
cdd . lba = 0 ;
}
2012-07-15 17:15:01 +02:00
}
2015-05-31 18:21:35 +02:00
/* seek to current subcode position */
if ( cdd . toc . sub )
{
2017-06-30 13:42:47 +02:00
cdStreamSeek ( cdd . toc . sub , cdd . lba * 96 , SEEK_SET ) ;
2012-07-15 17:15:01 +02:00
}
2012-10-13 19:01:31 +02:00
2021-09-09 00:54:45 +02:00
/* current track is an audio track ? */
if ( cdd . toc . tracks [ index ] . type = = TYPE_AUDIO )
2017-08-27 16:42:31 +02:00
{
2021-09-09 00:54:45 +02:00
/* seek to current track sector */
cdd_seek_audio ( index , cdd . lba ) ;
/* audio track playing */
scd . regs [ 0x36 > > 1 ] . byte . h = 0x00 ;
2017-08-27 16:42:31 +02:00
}
else
2013-06-16 23:38:47 +02:00
{
2021-09-09 00:54:45 +02:00
/* no audio track playing */
scd . regs [ 0x36 > > 1 ] . byte . h = 0x01 ;
2012-10-13 19:01:31 +02:00
}
2021-09-09 00:54:45 +02:00
/* udpate current track index */
cdd . index = index ;
2012-07-15 17:15:01 +02:00
}
2024-04-20 18:48:25 +02:00
/* seeking should start with at least one interrupt delay (fixes Radical Rex incorrect PRG-RAM & Word-RAM initialization, causing missing sprites during intro) */
if ( scd . regs [ 0x38 > > 1 ] . byte . h = = CD_SEEK )
{
/* reset track index */
int index = 0 ;
/* new LBA position */
int lba = ( ( scd . regs [ 0x44 > > 1 ] . byte . h * 10 + scd . regs [ 0x44 > > 1 ] . byte . l ) * 60 +
( scd . regs [ 0x46 > > 1 ] . byte . h * 10 + scd . regs [ 0x46 > > 1 ] . byte . l ) ) * 75 +
( scd . regs [ 0x48 > > 1 ] . byte . h * 10 + scd . regs [ 0x48 > > 1 ] . byte . l ) - 150 ;
/* CD drive latency */
if ( ! cdd . latency )
{
/* Fixes a few games hanging because they expect data to be read with some delay */
/* Wolf Team games (Annet Futatabi, Aisle Lord, Cobra Command, Earnest Evans, Road Avenger & Time Gal) need at least 11 interrupts delay */
/* Space Adventure Cobra (2nd morgue scene) needs at least 13 interrupts delay (incl. seek time, so 11 is OK) */
/* By default, at least two interrupts latency is required by current emulation model (BIOS hangs otherwise) */
cdd . latency = 2 + 9 * config . cd_latency ;
}
/* CD drive seek time */
/* max. seek time = 1.5 s = 1.5 x 75 = 112.5 CDD interrupts (rounded to 120) for 270000 sectors max on disc. */
/* Note: This is only a rough approximation since, on real hardware, seek time is much likely not linear and */
/* latency much larger than above value, but this model works fine for Sonic CD (track 26 playback needs to */
/* be enough delayed to start in sync with intro sequence, as compared with real hardware recording). */
/* It also works fine for Switch/Panic! intro (at least 30 interrupts are needed while seeking from 00:05:63 */
/* to 24:03:19 in Switch or when seeking from 00:05:60 to 24:06:07 in Panic!). */
if ( lba > cdd . lba )
{
cdd . latency + = ( ( ( lba - cdd . lba ) * 120 * config . cd_latency ) / 270000 ) ;
}
else
{
cdd . latency + = ( ( ( cdd . lba - lba ) * 120 * config . cd_latency ) / 270000 ) ;
}
/* update current LBA */
cdd . lba = lba ;
/* get track index */
while ( ( cdd . toc . tracks [ index ] . end < = lba ) & & ( index < cdd . toc . last ) )
index + + ;
/* audio track ? */
if ( cdd . toc . tracks [ index ] . type = = TYPE_AUDIO )
{
/* stay within track limits when seeking files */
if ( lba < cdd . toc . tracks [ index ] . start )
{
lba = cdd . toc . tracks [ index ] . start ;
}
/* seek to current track sector */
cdd_seek_audio ( index , lba ) ;
}
/* update current track index */
cdd . index = index ;
/* seek to current subcode position */
if ( cdd . toc . sub )
{
cdStreamSeek ( cdd . toc . sub , lba * 96 , SEEK_SET ) ;
}
/* no audio track playing (yet) */
scd . regs [ 0x36 > > 1 ] . byte . h = 0x01 ;
/* update CDD status to either PLAY or PAUSE depending on host command (will be reported to host once seeking has ended) */
cdd . status = scd . regs [ 0x42 > > 1 ] . byte . h & 0x05 ;
}
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
void cdd_process ( void )
{
/* Process CDD command */
switch ( scd . regs [ 0x42 > > 1 ] . byte . h & 0x0f )
{
2020-04-04 20:20:36 +02:00
case 0x00 : /* Get Drive Status */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2020-09-04 02:38:54 +02:00
/* RS0-RS1 are normally unchanged unless reported drive status needs to be updated (i.e previous drive command has been processed) */
2020-04-04 20:20:36 +02:00
/* Note: this function is called one 75hz frame ahead of CDD update so latency counter is always one step ahead of upcoming status */
2020-04-10 15:28:16 +02:00
/* Radical Rex and Annet Futatabi both need at least respectively 2 and 3 interrupts with 'playing' status returned before sectors start getting incremented */
if ( cdd . latency < = 3 )
2013-06-27 01:46:17 +02:00
{
2020-04-04 20:20:36 +02:00
/* update reported drive status */
scd . regs [ 0x38 > > 1 ] . byte . h = cdd . status ;
2023-05-07 14:46:23 +02:00
/* do not update RS1-RS8 if disc is stopped */
if ( ( cdd . status = = CD_STOP ) | | ( cdd . status > CD_PAUSE ) )
break ;
2020-04-04 20:20:36 +02:00
/* check if RS1 indicated invalid track infos (during seeking) */
if ( scd . regs [ 0x38 > > 1 ] . byte . l = = 0x0f )
2013-06-27 01:46:17 +02:00
{
2020-09-04 02:38:54 +02:00
/* seeking has ended so we return valid track infos, e.g current absolute time by default (fixes Lunar - The Silver Star) */
int lba = cdd . lba + 150 ;
scd . regs [ 0x38 > > 1 ] . byte . l = 0x00 ;
scd . regs [ 0x3a > > 1 ] . w = lut_BCD_16 [ ( lba / 75 ) / 60 ] ;
scd . regs [ 0x3c > > 1 ] . w = lut_BCD_16 [ ( lba / 75 ) % 60 ] ;
scd . regs [ 0x3e > > 1 ] . w = lut_BCD_16 [ ( lba % 75 ) ] ;
scd . regs [ 0x40 > > 1 ] . byte . h = cdd . toc . tracks [ cdd . index ] . type ? 0x04 : 0x00 ; /* Current block flags in RS8 (bit0 = mute status, bit1: pre-emphasis status, bit2: track type) */
}
/* otherwise, check if RS2-RS8 need to be updated */
else if ( scd . regs [ 0x38 > > 1 ] . byte . l = = 0x00 )
{
/* current absolute time */
int lba = cdd . lba + 150 ;
scd . regs [ 0x3a > > 1 ] . w = lut_BCD_16 [ ( lba / 75 ) / 60 ] ;
scd . regs [ 0x3c > > 1 ] . w = lut_BCD_16 [ ( lba / 75 ) % 60 ] ;
scd . regs [ 0x3e > > 1 ] . w = lut_BCD_16 [ ( lba % 75 ) ] ;
scd . regs [ 0x40 > > 1 ] . byte . h = cdd . toc . tracks [ cdd . index ] . type ? 0x04 : 0x00 ; /* Current block flags in RS8 (bit0 = mute status, bit1: pre-emphasis status, bit2: track type) */
}
else if ( scd . regs [ 0x38 > > 1 ] . byte . l = = 0x01 )
{
/* current track relative time */
int lba = abs ( cdd . lba - cdd . toc . tracks [ cdd . index ] . start ) ;
scd . regs [ 0x3a > > 1 ] . w = lut_BCD_16 [ ( lba / 75 ) / 60 ] ;
scd . regs [ 0x3c > > 1 ] . w = lut_BCD_16 [ ( lba / 75 ) % 60 ] ;
scd . regs [ 0x3e > > 1 ] . w = lut_BCD_16 [ ( lba % 75 ) ] ;
scd . regs [ 0x40 > > 1 ] . byte . h = cdd . toc . tracks [ cdd . index ] . type ? 0x04 : 0x00 ; /* Current block flags in RS8 (bit0 = mute status, bit1: pre-emphasis status, bit2: track type) */
}
else if ( scd . regs [ 0x38 > > 1 ] . byte . l = = 0x02 )
{
/* current track number */
2013-06-27 01:46:17 +02:00
scd . regs [ 0x3a > > 1 ] . w = ( cdd . index < cdd . toc . last ) ? lut_BCD_16 [ cdd . index + 1 ] : 0x0A0A ;
}
}
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
break ;
}
case 0x01 : /* Stop Drive */
{
2013-05-12 21:55:52 +02:00
/* update status */
2018-08-31 01:52:31 +02:00
cdd . status = cdd . loaded ? CD_TOC : NO_DISC ;
2012-10-13 19:01:31 +02:00
/* no audio track playing */
scd . regs [ 0x36 > > 1 ] . byte . h = 0x01 ;
2018-08-31 01:52:31 +02:00
/* RS1-RS8 ignored, expects 0x0 (CD_STOP) in RS0 once */
2023-05-07 14:46:23 +02:00
scd . regs [ 0x38 > > 1 ] . w = ( CD_STOP < < 8 ) | 0x0f ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
scd . regs [ 0x3a > > 1 ] . w = 0x0000 ;
scd . regs [ 0x3c > > 1 ] . w = 0x0000 ;
scd . regs [ 0x3e > > 1 ] . w = 0x0000 ;
2023-05-07 14:46:23 +02:00
scd . regs [ 0x40 > > 1 ] . w = ~ ( CD_STOP + 0x0f ) & 0x0f ;
/* reset drive position */
cdd . index = cdd . lba = 0 ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
return ;
}
2018-08-31 01:52:31 +02:00
case 0x02 : /* Report TOC infos */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2012-10-13 19:01:31 +02:00
/* Infos automatically retrieved by CDD processor from Q-Channel */
2012-10-25 01:14:53 +02:00
/* commands 0x00-0x02 (current block) and 0x03-0x05 (Lead-In) */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
switch ( scd . regs [ 0x44 > > 1 ] . byte . l )
{
2012-10-25 01:14:53 +02:00
case 0x00 : /* Current Absolute Time (MM:SS:FF) */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
int lba = cdd . lba + 150 ;
scd . regs [ 0x38 > > 1 ] . w = cdd . status < < 8 ;
scd . regs [ 0x3a > > 1 ] . w = lut_BCD_16 [ ( lba / 75 ) / 60 ] ;
scd . regs [ 0x3c > > 1 ] . w = lut_BCD_16 [ ( lba / 75 ) % 60 ] ;
scd . regs [ 0x3e > > 1 ] . w = lut_BCD_16 [ ( lba % 75 ) ] ;
2019-11-25 19:30:07 +01:00
scd . regs [ 0x40 > > 1 ] . byte . h = cdd . toc . tracks [ cdd . index ] . type ? 0x04 : 0x00 ; /* Current block flags in RS8 (bit0 = mute status, bit1: pre-emphasis status, bit2: track type) */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
break ;
}
2012-10-25 01:14:53 +02:00
case 0x01 : /* Current Track Relative Time (MM:SS:FF) */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2017-08-15 10:59:10 +02:00
int lba = abs ( cdd . lba - cdd . toc . tracks [ cdd . index ] . start ) ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
scd . regs [ 0x38 > > 1 ] . w = ( cdd . status < < 8 ) | 0x01 ;
scd . regs [ 0x3a > > 1 ] . w = lut_BCD_16 [ ( lba / 75 ) / 60 ] ;
scd . regs [ 0x3c > > 1 ] . w = lut_BCD_16 [ ( lba / 75 ) % 60 ] ;
scd . regs [ 0x3e > > 1 ] . w = lut_BCD_16 [ ( lba % 75 ) ] ;
2019-11-25 19:30:07 +01:00
scd . regs [ 0x40 > > 1 ] . byte . h = cdd . toc . tracks [ cdd . index ] . type ? 0x04 : 0x00 ; /* Current block flags in RS8 (bit0 = mute status, bit1: pre-emphasis status, bit2: track type) */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
break ;
}
2012-10-25 01:14:53 +02:00
case 0x02 : /* Current Track Number */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
scd . regs [ 0x38 > > 1 ] . w = ( cdd . status < < 8 ) | 0x02 ;
2012-07-15 17:15:01 +02:00
scd . regs [ 0x3a > > 1 ] . w = ( cdd . index < cdd . toc . last ) ? lut_BCD_16 [ cdd . index + 1 ] : 0x0A0A ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
scd . regs [ 0x3c > > 1 ] . w = 0x0000 ;
2012-10-25 01:14:53 +02:00
scd . regs [ 0x3e > > 1 ] . w = 0x0000 ; /* Disk Control Code (?) in RS6 */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
scd . regs [ 0x40 > > 1 ] . byte . h = 0x00 ;
break ;
}
case 0x03 : /* Total length (MM:SS:FF) */
{
int lba = cdd . toc . end + 150 ;
scd . regs [ 0x38 > > 1 ] . w = ( cdd . status < < 8 ) | 0x03 ;
scd . regs [ 0x3a > > 1 ] . w = lut_BCD_16 [ ( lba / 75 ) / 60 ] ;
scd . regs [ 0x3c > > 1 ] . w = lut_BCD_16 [ ( lba / 75 ) % 60 ] ;
scd . regs [ 0x3e > > 1 ] . w = lut_BCD_16 [ ( lba % 75 ) ] ;
scd . regs [ 0x40 > > 1 ] . byte . h = 0x00 ;
break ;
}
2012-10-25 01:14:53 +02:00
case 0x04 : /* First & Last Track Numbers */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
scd . regs [ 0x38 > > 1 ] . w = ( cdd . status < < 8 ) | 0x04 ;
scd . regs [ 0x3a > > 1 ] . w = 0x0001 ;
scd . regs [ 0x3c > > 1 ] . w = lut_BCD_16 [ cdd . toc . last ] ;
2012-10-25 01:14:53 +02:00
scd . regs [ 0x3e > > 1 ] . w = 0x0000 ; /* Drive Version (?) in RS6-RS7 */
2013-05-12 21:55:52 +02:00
scd . regs [ 0x40 > > 1 ] . byte . h = 0x00 ; /* Lead-In flags in RS8 (bit0 = mute status, bit1: pre-emphasis status, bit2: track type) */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
break ;
}
2012-10-25 01:14:53 +02:00
case 0x05 : /* Track Start Time (MM:SS:FF) */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
int track = scd . regs [ 0x46 > > 1 ] . byte . h * 10 + scd . regs [ 0x46 > > 1 ] . byte . l ;
int lba = cdd . toc . tracks [ track - 1 ] . start + 150 ;
scd . regs [ 0x38 > > 1 ] . w = ( cdd . status < < 8 ) | 0x05 ;
scd . regs [ 0x3a > > 1 ] . w = lut_BCD_16 [ ( lba / 75 ) / 60 ] ;
scd . regs [ 0x3c > > 1 ] . w = lut_BCD_16 [ ( lba / 75 ) % 60 ] ;
scd . regs [ 0x3e > > 1 ] . w = lut_BCD_16 [ ( lba % 75 ) ] ;
2019-11-25 19:30:07 +01:00
scd . regs [ 0x3e > > 1 ] . byte . h | = cdd . toc . tracks [ track - 1 ] . type ? 0x08 : 0x00 ; /* RS6 bit 3 is set for CD-ROM track */
2012-10-25 01:14:53 +02:00
scd . regs [ 0x40 > > 1 ] . byte . h = track % 10 ; /* Track Number (low digit) */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
break ;
}
2018-08-31 01:52:31 +02:00
case 0x06 : /* Latest Error Information */
{
scd . regs [ 0x38 > > 1 ] . w = ( cdd . status < < 8 ) | 0x06 ;
scd . regs [ 0x3a > > 1 ] . w = 0x0000 ; /* no error */
scd . regs [ 0x3c > > 1 ] . w = 0x0000 ;
scd . regs [ 0x3e > > 1 ] . w = 0x0000 ;
scd . regs [ 0x40 > > 1 ] . byte . h = 0x00 ;
break ;
}
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
default :
{
2012-10-13 19:01:31 +02:00
# ifdef LOG_ERROR
2018-08-31 01:52:31 +02:00
error ( " Invalid CDD request code %02X (%X) \n " , scd . regs [ 0x44 > > 1 ] . byte . l , s68k . pc ) ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
# endif
return ;
}
}
break ;
}
2015-07-09 23:48:30 +02:00
case 0x03 : /* Play */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2024-04-20 18:48:25 +02:00
/* RS0 should indicate seeking until drive is ready (fixes audio delay in Bari Arm) */
2016-07-03 15:52:17 +02:00
/* RS1=0xf to invalidate track infos in RS2-RS8 until drive is ready (fixes Snatcher Act 2 start cutscene) */
2020-04-04 20:20:36 +02:00
scd . regs [ 0x38 > > 1 ] . w = ( CD_SEEK < < 8 ) | 0x0f ;
2016-07-03 15:52:17 +02:00
scd . regs [ 0x3a > > 1 ] . w = 0x0000 ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
scd . regs [ 0x3c > > 1 ] . w = 0x0000 ;
scd . regs [ 0x3e > > 1 ] . w = 0x0000 ;
2023-05-07 14:46:23 +02:00
scd . regs [ 0x40 > > 1 ] . w = ~ ( CD_SEEK + 0x0f ) & 0x0f ;
2016-07-03 15:52:17 +02:00
return ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
case 0x04 : /* Seek */
{
2016-07-03 15:52:17 +02:00
/* RS1=0xf to invalidate track infos in RS2-RS8 while seeking (fixes Final Fight CD intro when seek time is emulated) */
2013-06-27 01:46:17 +02:00
scd . regs [ 0x38 > > 1 ] . w = ( CD_SEEK < < 8 ) | 0x0f ;
scd . regs [ 0x3a > > 1 ] . w = 0x0000 ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
scd . regs [ 0x3c > > 1 ] . w = 0x0000 ;
scd . regs [ 0x3e > > 1 ] . w = 0x0000 ;
2023-05-07 14:46:23 +02:00
scd . regs [ 0x40 > > 1 ] . w = ~ ( CD_SEEK + 0x0f ) & 0x0f ;
2013-06-27 01:46:17 +02:00
return ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
case 0x06 : /* Pause */
{
/* no audio track playing */
scd . regs [ 0x36 > > 1 ] . byte . h = 0x01 ;
2013-05-12 21:55:52 +02:00
/* update status (RS1-RS8 unchanged) */
2015-08-26 23:33:20 +02:00
cdd . status = scd . regs [ 0x38 > > 1 ] . byte . h = CD_PAUSE ;
2013-05-12 21:55:52 +02:00
break ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
case 0x07 : /* Resume */
{
2013-05-12 21:55:52 +02:00
/* update status (RS1-RS8 unchanged) */
cdd . status = scd . regs [ 0x38 > > 1 ] . byte . h = CD_PLAY ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
break ;
}
case 0x08 : /* Forward Scan */
{
2013-05-12 21:55:52 +02:00
/* reset scanning direction / speed */
2012-10-13 19:01:31 +02:00
cdd . scanOffset = CD_SCAN_SPEED ;
2013-05-12 21:55:52 +02:00
/* update status (RS1-RS8 unchanged) */
cdd . status = scd . regs [ 0x38 > > 1 ] . byte . h = CD_SCAN ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
break ;
}
case 0x09 : /* Rewind Scan */
{
2013-05-12 21:55:52 +02:00
/* reset scanning direction / speed */
2012-10-13 19:01:31 +02:00
cdd . scanOffset = - CD_SCAN_SPEED ;
2013-05-12 21:55:52 +02:00
/* update status (RS1-RS8 unchanged) */
cdd . status = scd . regs [ 0x38 > > 1 ] . byte . h = CD_SCAN ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
break ;
}
2013-05-12 21:55:52 +02:00
case 0x0a : /* N-Track Jump Control ? (usually sent before CD_SEEK or CD_PLAY commands) */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
{
2013-05-12 21:55:52 +02:00
/* TC3 corresponds to seek direction (00=forward, FF=reverse) */
/* TC4-TC7 are related to seek length (4x4 bits i.e parameter values are between -65535 and +65535) */
/* Maybe related to number of auto-sequenced track jumps/moves for CD DSP (cf. CXD2500BQ datasheet) */
/* also see US Patent nr. 5222054 for a detailled description of seeking operation using Track Jump */
2012-10-13 19:01:31 +02:00
/* no audio track playing */
scd . regs [ 0x36 > > 1 ] . byte . h = 0x01 ;
2013-06-27 01:46:17 +02:00
/* update status (RS1-RS8 unchanged) */
2015-08-26 23:33:20 +02:00
cdd . status = scd . regs [ 0x38 > > 1 ] . byte . h = CD_PAUSE ;
2013-06-27 01:46:17 +02:00
break ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
}
case 0x0c : /* Close Tray */
{
2012-10-13 19:01:31 +02:00
/* no audio track playing */
scd . regs [ 0x36 > > 1 ] . byte . h = 0x01 ;
2013-05-12 21:55:52 +02:00
/* update status */
2018-08-31 01:52:31 +02:00
cdd . status = cdd . loaded ? CD_TOC : NO_DISC ;
2013-05-12 21:55:52 +02:00
2018-08-31 01:52:31 +02:00
/* RS1-RS8 ignored, expects CD_STOP in RS0 once */
2023-05-07 14:46:23 +02:00
scd . regs [ 0x38 > > 1 ] . w = ( CD_STOP < < 8 ) | 0x0f ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
scd . regs [ 0x3a > > 1 ] . w = 0x0000 ;
scd . regs [ 0x3c > > 1 ] . w = 0x0000 ;
scd . regs [ 0x3e > > 1 ] . w = 0x0000 ;
2023-05-07 14:46:23 +02:00
scd . regs [ 0x40 > > 1 ] . w = ~ ( CD_STOP + 0x0f ) & 0x0f ;
/* reset drive position */
cdd . index = cdd . lba = 0 ;
2012-11-24 20:51:04 +01:00
# ifdef CD_TRAY_CALLBACK
CD_TRAY_CALLBACK
# endif
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
return ;
}
case 0x0d : /* Open Tray */
{
/* no audio track playing */
scd . regs [ 0x36 > > 1 ] . byte . h = 0x01 ;
2013-05-12 21:55:52 +02:00
/* update status (RS1-RS8 ignored) */
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
cdd . status = CD_OPEN ;
2023-05-07 14:46:23 +02:00
scd . regs [ 0x38 > > 1 ] . w = ( CD_OPEN < < 8 ) | 0x0f ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
scd . regs [ 0x3a > > 1 ] . w = 0x0000 ;
scd . regs [ 0x3c > > 1 ] . w = 0x0000 ;
scd . regs [ 0x3e > > 1 ] . w = 0x0000 ;
2023-05-07 14:46:23 +02:00
scd . regs [ 0x40 > > 1 ] . w = ~ ( CD_OPEN + 0x0f ) & 0x0f ;
/* reset drive position */
cdd . index = cdd . lba = 0 ;
2012-11-24 20:51:04 +01:00
# ifdef CD_TRAY_CALLBACK
CD_TRAY_CALLBACK
# endif
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
return ;
}
default : /* Unknown command */
2018-08-31 01:52:31 +02:00
# ifdef LOG_ERROR
error ( " Unsupported CDD command %02X (%X) \n " , scd . regs [ 0x42 > > 1 ] . byte . h & 0x0f , s68k . pc ) ;
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
[Core/SCD]
----------
* added Mega CD / Sega CD hardware emulation (incl. Sub 68K, CDD, CDC, PCM, GFX
rotation/scaling, etc)
* added .ISO & .BIN CD image file support
* added 512K backup cartridge RAM support
* added savestate support for CD games
NOTES:
~~~~~~
* to play CD games, original BIOS ROM files are required in /genplus/bios/
directory: unzip & rename them to bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin
* CD audio tracks (CD-DA) are not supported (yet)
[Core/CPU]
----------
* modified 68k core for Mega CD / Sega CD support
[Core/VDP]
---------------
* improved DMA accuracy
* added support for 8-bit VRAM writes with undocumented code value (verified on
real hardware by Nemesis)
[Gamecube/Wii]
---------------
* modified Master System & Game Gear "BIOS" support (files should be named
bios_U.sms, bios_J.sms, bios_E.sms & bios.gg and copied to /genplus/bios
directory).
* replaced "Hard Reset" button by a Soft Reset for systems having a Reset button
(Mega Drive / Genesis & Master System)
* State & SRAM files are now only compressed when saving to Gamecube Memory
Cards
* various fixes & cleanup.
2012-07-05 21:22:12 +02:00
# endif
scd . regs [ 0x38 > > 1 ] . byte . h = cdd . status ;
break ;
}
/* only compute checksum when necessary */
scd . regs [ 0x40 > > 1 ] . byte . l = ~ ( scd . regs [ 0x38 > > 1 ] . byte . h + scd . regs [ 0x38 > > 1 ] . byte . l +
scd . regs [ 0x3a > > 1 ] . byte . h + scd . regs [ 0x3a > > 1 ] . byte . l +
scd . regs [ 0x3c > > 1 ] . byte . h + scd . regs [ 0x3c > > 1 ] . byte . l +
scd . regs [ 0x3e > > 1 ] . byte . h + scd . regs [ 0x3e > > 1 ] . byte . l +
scd . regs [ 0x40 > > 1 ] . byte . h ) & 0x0f ;
}