Updated some notes and cosmetic clean-up.

This commit is contained in:
RobertoFresca 2015-05-09 08:13:38 -03:00
parent 7e84989659
commit 6b0e657b6b

View File

@ -2,94 +2,75 @@
// copyright-holders:Roberto Fresca // copyright-holders:Roberto Fresca
/****************************************************************************** /******************************************************************************
JOKER'S WILD - SIGMA JOKER'S WILD - SIGMA (1988)
-------------------- Preliminary driver by Roberto Fresca.
Preliminary driver by Roberto Fresca.
Games running on this hardware:
* Joker's Wild (encrypted). 1988, Sigma.
******************************************************************************* *******************************************************************************
Hardware Notes (guessed):
------------------------
Hardware Notes (guessed): CPU: 1x M6809
------------------------ Video: 1x M6845 CRTC or similar.
I/O: 2x PIAs ?? (there is code to initialize PIAs at $8033)
CPU: 1x M6809
Video: 1x M6845 CRTC or similar.
I/O: 2x PIAs ?? (there is code to initialize PIAs at $8033)
******************************************************************************* *******************************************************************************
*** Game Notes ***
*** Game Notes *** RND old notes:
Game is trying to boot, and after approx. 90 seconds an error message appear
Game is trying to boot, and after approx. 90 seconds an error message appear on screen: "Random number generator is defective", then stuck here.
on screen: "Random number generator is defective", then stuck here. See code at $9859
See code at $9859
PIAs are commented out just to see the R/W on error log.
Currently the game spit an error about bad RAM, and after approx 90 seconds
the playfield is drawn and then hang.
******************************************************************************* *******************************************************************************
-------------------- --------------------
*** Memory Map *** *** Memory Map ***
-------------------- --------------------
0x0000 - 0x07FF ; Video RAM. 0x0000 - 0x07FF ; Video RAM.
0x2000 - 0x27FF ; Color RAM. 0x2000 - 0x27FF ; Color RAM.
0x4004 - 0x4007 ; PIA?. 0x4004 - 0x4007 ; PIA?.
0x4008 - 0x400B ; PIA?. 0x4008 - 0x400B ; PIA?.
0x6000 - 0x6001 ; M6845 CRTC. 0x6000 - 0x6001 ; M6845 CRTC.
0x8000 - 0xFFFF ; ROM space. 0x8000 - 0xFFFF ; ROM space.
*** MC6545 Initialization *** *** MC6545 Initialization ***
---------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------
register: R00 R01 R02 R03 R04 R05 R06 R07 R08 R09 R10 R11 R12 R13 R14 R15 R16 R17 register: R00 R01 R02 R03 R04 R05 R06 R07 R08 R09 R10 R11 R12 R13 R14 R15 R16 R17
---------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------
value: 0x20 0x18 0x1B 0x64 0x20 0x07 0x1A 0x1D 0x00 0x07 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00. value: 0x20 0x18 0x1B 0x64 0x20 0x07 0x1A 0x1D 0x00 0x07 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00.
******************************************************************************* *******************************************************************************
DRIVER UPDATES:
DRIVER UPDATES: [2008-10-30]
- Fixed graphics to 2 bits per pixel.
[2008-10-25]
- Initial release.
- ROMs load OK.
- Proper ROMs decryption.
- Added MC6845 CRTC.
- Video RAM OK.
- Added technical notes.
[2008-10-30] TODO:
- Fixed graphics to 2 bits per pixel.
[2008-10-25]
- Initial release.
- ROMs load OK.
- Proper ROMs decryption.
- Added MC6845 CRTC.
- Video RAM OK.
- Added technical notes.
TODO:
- RND number generator.
- Inputs
- Sound.
- A lot of work.
- RND number generator.
- Inputs
- Sound.
- A lot of work.
*******************************************************************************/ *******************************************************************************/
#define MASTER_CLOCK XTAL_8MHz /* guess */ #define MASTER_CLOCK XTAL_8MHz /* guess */
#include "emu.h" #include "emu.h"
@ -131,21 +112,18 @@ public:
* Video Hardware * * Video Hardware *
*************************/ *************************/
WRITE8_MEMBER(jokrwild_state::jokrwild_videoram_w) WRITE8_MEMBER(jokrwild_state::jokrwild_videoram_w)
{ {
m_videoram[offset] = data; m_videoram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset); m_bg_tilemap->mark_tile_dirty(offset);
} }
WRITE8_MEMBER(jokrwild_state::jokrwild_colorram_w) WRITE8_MEMBER(jokrwild_state::jokrwild_colorram_w)
{ {
m_colorram[offset] = data; m_colorram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset); m_bg_tilemap->mark_tile_dirty(offset);
} }
TILE_GET_INFO_MEMBER(jokrwild_state::get_bg_tile_info) TILE_GET_INFO_MEMBER(jokrwild_state::get_bg_tile_info)
{ {
/* - bits - /* - bits -
@ -160,31 +138,23 @@ TILE_GET_INFO_MEMBER(jokrwild_state::get_bg_tile_info)
SET_TILE_INFO_MEMBER(0, code , color , 0); SET_TILE_INFO_MEMBER(0, code , color , 0);
} }
void jokrwild_state::video_start() void jokrwild_state::video_start()
{ {
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jokrwild_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 24, 26); m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jokrwild_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 24, 26);
} }
UINT32 jokrwild_state::screen_update_jokrwild(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) UINT32 jokrwild_state::screen_update_jokrwild(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{ {
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
return 0; return 0;
} }
PALETTE_INIT_MEMBER(jokrwild_state, jokrwild) PALETTE_INIT_MEMBER(jokrwild_state, jokrwild)
{ {
//missing proms //missing proms
} }
/*************************
* Machine Init *
*************************/
/***************************** /*****************************
* Read/Write Handlers * * Read/Write Handlers *
*****************************/ *****************************/
@ -200,6 +170,7 @@ READ8_MEMBER(jokrwild_state::rng_r)
return machine().rand() & 0xff; return machine().rand() & 0xff;
} }
/************************* /*************************
* Memory Map Information * * Memory Map Information *
*************************/ *************************/
@ -220,7 +191,6 @@ static ADDRESS_MAP_START( jokrwild_map, AS_PROGRAM, 8, jokrwild_state )
AM_RANGE(0x8000, 0xffff) AM_ROM AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
/* I/O byte R/W /* I/O byte R/W
@ -238,6 +208,7 @@ ADDRESS_MAP_END
*/ */
/************************* /*************************
* Input Ports * * Input Ports *
*************************/ *************************/
@ -425,6 +396,7 @@ WRITE8_MEMBER(jokrwild_state::testb_w)
// printf("%02x B\n",data); // printf("%02x B\n",data);
} }
/************************* /*************************
* Machine Drivers * * Machine Drivers *
*************************/ *************************/
@ -452,8 +424,8 @@ static MACHINE_CONFIG_START( jokrwild, jokrwild_state )
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE((32+1)*8, (32+1)*8) /* From MC6845, registers 00 & 04. (value-1) */ MCFG_SCREEN_SIZE((32+1)*8, (32+1)*8) // From MC6845, registers 00 & 04. (value-1)
MCFG_SCREEN_VISIBLE_AREA(0*8, 24*8-1, 0*8, 26*8-1) /* From MC6845, registers 01 & 06 */ MCFG_SCREEN_VISIBLE_AREA(0*8, 24*8-1, 0*8, 26*8-1) // From MC6845, registers 01 & 06.
MCFG_SCREEN_UPDATE_DRIVER(jokrwild_state, screen_update_jokrwild) MCFG_SCREEN_UPDATE_DRIVER(jokrwild_state, screen_update_jokrwild)
MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_PALETTE("palette")
@ -504,17 +476,16 @@ ROM_END
DRIVER_INIT_MEMBER(jokrwild_state,jokrwild) DRIVER_INIT_MEMBER(jokrwild_state,jokrwild)
/***************************************************************************** /*****************************************************************************
Encryption was made by pages of 256 bytes. Encryption was made by pages of 256 bytes.
For each page, the value is XORed with a fixed value (0xCC), For each page, the value is XORed with a fixed value (0xCC),
then XORed again with the offset of the original value inside its own page. then XORed again with the offset of the original value inside its own page.
Example: Example:
For encrypted value at offset 0x123A (0x89)... For encrypted value at offset 0x123A (0x89)...
0x89 XOR 0xCC XOR 0x3A = 0x7F
0x89 XOR 0xCC XOR 0x3A = 0x7F
*****************************************************************************/ *****************************************************************************/
{ {
@ -533,5 +504,5 @@ DRIVER_INIT_MEMBER(jokrwild_state,jokrwild)
* Game Drivers * * Game Drivers *
*************************/ *************************/
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */ /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
GAME( 1988, jokrwild, 0, jokrwild, jokrwild, jokrwild_state, jokrwild, ROT0, "Sigma", "Joker's Wild (encrypted)", GAME_NO_SOUND | GAME_NOT_WORKING ) GAME( 1988, jokrwild, 0, jokrwild, jokrwild, jokrwild_state, jokrwild, ROT0, "Sigma", "Joker's Wild (encrypted)", GAME_NO_SOUND | GAME_NOT_WORKING )