mirror of
https://github.com/holub/mame
synced 2025-07-02 00:29:37 +03:00
Cleanups and version bump.
This commit is contained in:
parent
6d7ed9b573
commit
229d598989
@ -8,17 +8,17 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
NOTES:
|
NOTES:
|
||||||
*** There seems to be a disagreement in dasm with bytes like this : 0500 0307
|
*** There seems to be a disagreement in dasm with bytes like this : 0500 0307
|
||||||
On one hand, you can dasm it like this : add Y1,A X:(R2+00),Y0
|
On one hand, you can dasm it like this : add Y1,A X:(R2+00),Y0
|
||||||
On the other, you can dasm it like this : move(m) P:(R2+00),B0
|
On the other, you can dasm it like this : move(m) P:(R2+00),B0
|
||||||
The interesting doc pages for this are the following : move(m) . A-155
|
The interesting doc pages for this are the following : move(m) . A-155
|
||||||
mem move + short displacement . A-139
|
mem move + short displacement . A-139
|
||||||
add . A-23
|
add . A-23
|
||||||
(POSSIBILITY : Maybe Add can't have a mem move + short displacement parallel move?)
|
(POSSIBILITY : Maybe Add can't have a mem move + short displacement parallel move?)
|
||||||
(CURRENT SOLUTION : I'm completely ignoring mem move + short displacements for now)
|
(CURRENT SOLUTION : I'm completely ignoring mem move + short displacements for now)
|
||||||
|
|
||||||
*** This disassembler has been 75% tested. There may remain some bugs, but it disassembles
|
*** This disassembler has been 75% tested. There may remain some bugs, but it disassembles
|
||||||
Polygonet Commanders' memtest code 100% accurate (to my knowledge).
|
Polygonet Commanders' memtest code 100% accurate (to my knowledge).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dsp56k.h"
|
#include "dsp56k.h"
|
||||||
@ -1188,16 +1188,16 @@ static size_t dsp56k_dasm_tfr_2(const UINT16 op_byte, char* opcode_str, char* ar
|
|||||||
/* MPY : 0001 0110 RRDD FQQQ : A-160 */
|
/* MPY : 0001 0110 RRDD FQQQ : A-160 */
|
||||||
static size_t dsp56k_dasm_mpy_2(const UINT16 op_byte, char* opcode_str, char* arg_str)
|
static size_t dsp56k_dasm_mpy_2(const UINT16 op_byte, char* opcode_str, char* arg_str)
|
||||||
{
|
{
|
||||||
/* TODO
|
/* TODO
|
||||||
// MPY - 0001 0110 RRDD FQQQ
|
// MPY - 0001 0110 RRDD FQQQ
|
||||||
decode_k_table(BITS(op,0x0100), Dnot);
|
decode_k_table(BITS(op,0x0100), Dnot);
|
||||||
Rnum = decode_RR_table(BITS(op,0x00c0));
|
Rnum = decode_RR_table(BITS(op,0x00c0));
|
||||||
decode_DD_table(BITS(op,0x0030), S);
|
decode_DD_table(BITS(op,0x0030), S);
|
||||||
decode_QQQF_table(BITS(op,0x0007), BITS(op,0x0008), S1, S2, D);
|
decode_QQQF_table(BITS(op,0x0007), BITS(op,0x0008), S1, S2, D);
|
||||||
sprintf(buffer, "mpy %s,%s,%s %s,(R%d)+N%d %s,%s", S1, S2, D, Dnot, Rnum, Rnum, S, Dnot);
|
sprintf(buffer, "mpy %s,%s,%s %s,(R%d)+N%d %s,%s", S1, S2, D, Dnot, Rnum, Rnum, S, Dnot);
|
||||||
// Strange, but not entirely out of the question - this 'k' parameter is hardcoded
|
// Strange, but not entirely out of the question - this 'k' parameter is hardcoded
|
||||||
// I cheat here and do the parallel memory data move above - this specific one is only used twice
|
// I cheat here and do the parallel memory data move above - this specific one is only used twice
|
||||||
retSize = 1;
|
retSize = 1;
|
||||||
*/
|
*/
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1205,16 +1205,16 @@ static size_t dsp56k_dasm_mpy_2(const UINT16 op_byte, char* opcode_str, char* ar
|
|||||||
/* MAC : 0001 0111 RRDD FQQQ : A-122 */
|
/* MAC : 0001 0111 RRDD FQQQ : A-122 */
|
||||||
static size_t dsp56k_dasm_mac_2(const UINT16 op_byte, char* opcode_str, char* arg_str)
|
static size_t dsp56k_dasm_mac_2(const UINT16 op_byte, char* opcode_str, char* arg_str)
|
||||||
{
|
{
|
||||||
/* TODO
|
/* TODO
|
||||||
// MAC - 0001 0111 RRDD FQQQ
|
// MAC - 0001 0111 RRDD FQQQ
|
||||||
decode_k_table(BITS(op,0x0100), Dnot);
|
decode_k_table(BITS(op,0x0100), Dnot);
|
||||||
Rnum = decode_RR_table(BITS(op,0x00c0));
|
Rnum = decode_RR_table(BITS(op,0x00c0));
|
||||||
decode_DD_table(BITS(op,0x0030), S);
|
decode_DD_table(BITS(op,0x0030), S);
|
||||||
decode_QQQF_table(BITS(op,0x0007), BITS(op,0x0008), S1, S2, D);
|
decode_QQQF_table(BITS(op,0x0007), BITS(op,0x0008), S1, S2, D);
|
||||||
sprintf(buffer, "mac %s,%s,%s %s,(R%d)+N%d %s,%s", S1, S2, D, Dnot, Rnum, Rnum, S, Dnot);
|
sprintf(buffer, "mac %s,%s,%s %s,(R%d)+N%d %s,%s", S1, S2, D, Dnot, Rnum, Rnum, S, Dnot);
|
||||||
// Strange, but not entirely out of the question - this 'k' parameter is hardcoded
|
// Strange, but not entirely out of the question - this 'k' parameter is hardcoded
|
||||||
// I cheat here and do the parallel memory data move above - this specific one is only used twice
|
// I cheat here and do the parallel memory data move above - this specific one is only used twice
|
||||||
retSize = 1;
|
retSize = 1;
|
||||||
*/
|
*/
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -151,7 +151,7 @@ static const ldplayer_interface *player_interfaces[] =
|
|||||||
&simutrek_interface,
|
&simutrek_interface,
|
||||||
&ldv1000_interface,
|
&ldv1000_interface,
|
||||||
// &ldp1450_interface,
|
// &ldp1450_interface,
|
||||||
// &vp932_interface,
|
// &vp932_interface,
|
||||||
&vp931_interface
|
&vp931_interface
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -329,15 +329,15 @@ static WRITE8_HANDLER( output0_w )
|
|||||||
ldplayer_data *player = ld->player;
|
ldplayer_data *player = ld->player;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
$80 = n/c
|
$80 = n/c
|
||||||
$40 = LED (?) -> C335
|
$40 = LED (?) -> C335
|
||||||
$20 = LED (?)
|
$20 = LED (?)
|
||||||
$10 = LED (?) -> CX
|
$10 = LED (?) -> CX
|
||||||
$08 = EJECT
|
$08 = EJECT
|
||||||
$04 = inverted -> AUDIO MUTE II
|
$04 = inverted -> AUDIO MUTE II
|
||||||
$02 = inverted -> AUDIO MUTE I
|
$02 = inverted -> AUDIO MUTE I
|
||||||
$01 = inverted -> VIDEO MUTE
|
$01 = inverted -> VIDEO MUTE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (LOG_PORTS && (player->out0 ^ data) & 0xff)
|
if (LOG_PORTS && (player->out0 ^ data) & 0xff)
|
||||||
{
|
{
|
||||||
@ -371,15 +371,15 @@ static WRITE8_HANDLER( output1_w )
|
|||||||
INT32 speed = 0;
|
INT32 speed = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
$80 = n/c
|
$80 = n/c
|
||||||
$40 = n/c
|
$40 = n/c
|
||||||
$20 = n/c
|
$20 = n/c
|
||||||
$10 = n/c
|
$10 = n/c
|
||||||
$08 = inverted -> SMS
|
$08 = inverted -> SMS
|
||||||
$04 = inverted -> SSS
|
$04 = inverted -> SSS
|
||||||
$02 = inverted -> SCAN CMD
|
$02 = inverted -> SCAN CMD
|
||||||
$01 = OSM
|
$01 = OSM
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (LOG_PORTS && (player->out1 ^ data) & 0x08)
|
if (LOG_PORTS && (player->out1 ^ data) & 0x08)
|
||||||
{
|
{
|
||||||
@ -413,9 +413,9 @@ static WRITE8_HANDLER( output1_w )
|
|||||||
static WRITE8_HANDLER( lcd_w )
|
static WRITE8_HANDLER( lcd_w )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
Frame number is written as 5 digits here; however, it is not actually
|
Frame number is written as 5 digits here; however, it is not actually
|
||||||
connected
|
connected
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -426,16 +426,16 @@ static WRITE8_HANDLER( lcd_w )
|
|||||||
static READ8_HANDLER( keypad_r )
|
static READ8_HANDLER( keypad_r )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
From the code, this is apparently a vestigial keypad with basic controls:
|
From the code, this is apparently a vestigial keypad with basic controls:
|
||||||
$01 = play
|
$01 = play
|
||||||
$02 = still
|
$02 = still
|
||||||
$04 = jump 25 frames backward
|
$04 = jump 25 frames backward
|
||||||
$08 = jump 25 frames forward
|
$08 = jump 25 frames forward
|
||||||
$10 = search for frame 50(?)
|
$10 = search for frame 50(?)
|
||||||
$20 = search for frame 350(?)
|
$20 = search for frame 350(?)
|
||||||
$40 = reset
|
$40 = reset
|
||||||
$80 = play reverse
|
$80 = play reverse
|
||||||
*/
|
*/
|
||||||
return 0x00;
|
return 0x00;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -502,10 +502,10 @@ static READ8_HANDLER( port1_r )
|
|||||||
UINT8 result = 0x00;
|
UINT8 result = 0x00;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
$80 = P17 = (in) unsure
|
$80 = P17 = (in) unsure
|
||||||
$40 = P16 = (in) /ERP from datic circuit
|
$40 = P16 = (in) /ERP from datic circuit
|
||||||
$20 = P15 = (in) D105
|
$20 = P15 = (in) D105
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!player->daticerp)
|
if (!player->daticerp)
|
||||||
result |= 0x40;
|
result |= 0x40;
|
||||||
@ -524,12 +524,12 @@ static WRITE8_HANDLER( port1_w )
|
|||||||
ldplayer_data *player = ld->player;
|
ldplayer_data *player = ld->player;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
$10 = P14 = (out) D104 -> /SPEED
|
$10 = P14 = (out) D104 -> /SPEED
|
||||||
$08 = P13 = (out) D103 -> /TIMER ENABLE
|
$08 = P13 = (out) D103 -> /TIMER ENABLE
|
||||||
$04 = P12 = (out) D102 -> /REV
|
$04 = P12 = (out) D102 -> /REV
|
||||||
$02 = P11 = (out) D101 -> /FORW
|
$02 = P11 = (out) D101 -> /FORW
|
||||||
$01 = P10 = (out) D100 -> some op-amp then to C334, B56, B332
|
$01 = P10 = (out) D100 -> some op-amp then to C334, B56, B332
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (LOG_PORTS && (player->port1 ^ data) & 0x1f)
|
if (LOG_PORTS && (player->port1 ^ data) & 0x1f)
|
||||||
{
|
{
|
||||||
@ -599,10 +599,10 @@ static READ8_HANDLER( port2_r )
|
|||||||
UINT8 result = 0x00;
|
UINT8 result = 0x00;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
$80 = P27 = (in) set/reset latch; set by FOC LS, reset by IGR
|
$80 = P27 = (in) set/reset latch; set by FOC LS, reset by IGR
|
||||||
$20 = P25 = (in) D125 -> 0 when data written to controller is preset, reset to 1 when read
|
$20 = P25 = (in) D125 -> 0 when data written to controller is preset, reset to 1 when read
|
||||||
$10 = P24 = (in) D124 -> 0 when data from controller is present, reset to 1 on a read
|
$10 = P24 = (in) D124 -> 0 when data from controller is present, reset to 1 on a read
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!player->tocontroller_pending)
|
if (!player->tocontroller_pending)
|
||||||
result |= 0x20;
|
result |= 0x20;
|
||||||
@ -620,9 +620,9 @@ static READ8_HANDLER( port2_r )
|
|||||||
static WRITE8_HANDLER( port2_w )
|
static WRITE8_HANDLER( port2_w )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
$40 = P26 = (out) cleared while data is sent back & forth; set afterwards
|
$40 = P26 = (out) cleared while data is sent back & forth; set afterwards
|
||||||
[Not actually connected, but this is done in the code]
|
[Not actually connected, but this is done in the code]
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -297,17 +297,17 @@ GFXDECODE_END
|
|||||||
|
|
||||||
static WRITE8_HANDLER(chanbara_ay_out_0_w)
|
static WRITE8_HANDLER(chanbara_ay_out_0_w)
|
||||||
{
|
{
|
||||||
// printf("chanbara_ay_out_0_w %02x\n",data);
|
// printf("chanbara_ay_out_0_w %02x\n",data);
|
||||||
scroll=data;
|
scroll=data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static WRITE8_HANDLER(chanbara_ay_out_1_w)
|
static WRITE8_HANDLER(chanbara_ay_out_1_w)
|
||||||
{
|
{
|
||||||
// printf("chanbara_ay_out_1_w %02x\n",data);
|
// printf("chanbara_ay_out_1_w %02x\n",data);
|
||||||
memory_set_bankptr(1, memory_region(machine, "user1") + ((data&4)?0x4000:0x0000) );
|
memory_set_bankptr(1, memory_region(machine, "user1") + ((data&4)?0x4000:0x0000) );
|
||||||
scrollhi = data & 0x03;
|
scrollhi = data & 0x03;
|
||||||
|
|
||||||
//if (data&0xf8) printf("chanbara_ay_out_1_w unused bits set %02x\n",data&0xf8);
|
//if (data&0xf8) printf("chanbara_ay_out_1_w unused bits set %02x\n",data&0xf8);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sound_irq(running_machine *machine, int linestate)
|
static void sound_irq(running_machine *machine, int linestate)
|
||||||
|
@ -39,23 +39,23 @@
|
|||||||
CPUID info:
|
CPUID info:
|
||||||
Original set:
|
Original set:
|
||||||
|
|
||||||
CPUID Level: EAX: EBX: ECX: EDX:
|
CPUID Level: EAX: EBX: ECX: EDX:
|
||||||
00000000 00000003 756E6547 6C65746E 49656E69
|
00000000 00000003 756E6547 6C65746E 49656E69
|
||||||
00000001 0000068A 00000002 00000000 0387F9FF
|
00000001 0000068A 00000002 00000000 0387F9FF
|
||||||
00000002 03020101 00000000 00000000 0C040882
|
00000002 03020101 00000000 00000000 0C040882
|
||||||
00000003 00000000 00000000 CA976D2E 000082F6
|
00000003 00000000 00000000 CA976D2E 000082F6
|
||||||
80000000 00000000 00000000 CA976D2E 000082F6
|
80000000 00000000 00000000 CA976D2E 000082F6
|
||||||
C0000000 00000000 00000000 CA976D2E 000082F6
|
C0000000 00000000 00000000 CA976D2E 000082F6
|
||||||
|
|
||||||
|
|
||||||
Version 2:
|
Version 2:
|
||||||
CPUID Level: EAX: EBX: ECX: EDX:
|
CPUID Level: EAX: EBX: ECX: EDX:
|
||||||
00000000 00000003 756E6547 6C65746E 49656E69
|
00000000 00000003 756E6547 6C65746E 49656E69
|
||||||
00000001 0000068A 00000002 00000000 0387F9FF
|
00000001 0000068A 00000002 00000000 0387F9FF
|
||||||
00000002 03020101 00000000 00000000 0C040882
|
00000002 03020101 00000000 00000000 0C040882
|
||||||
00000003 00000000 00000000 B8BA1941 00038881
|
00000003 00000000 00000000 B8BA1941 00038881
|
||||||
80000000 00000000 00000000 B8BA1941 00038881
|
80000000 00000000 00000000 B8BA1941 00038881
|
||||||
C0000000 00000000 00000000 B8BA1941 00038881
|
C0000000 00000000 00000000 B8BA1941 00038881
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -465,7 +465,7 @@ static READ16_HANDLER( custom_key_r )
|
|||||||
res = BITSWAP16(keyval, 22,26,31,23,18,20,16,30,24,21,25,19,17,29,28,27);
|
res = BITSWAP16(keyval, 22,26,31,23,18,20,16,30,24,21,25,19,17,29,28,27);
|
||||||
|
|
||||||
keyval >>= 1;
|
keyval >>= 1;
|
||||||
// printf("popcount(%08X) = %d\n", keyval & 0x58000c00, popcount(keyval & 0x58000c00));
|
// printf("popcount(%08X) = %d\n", keyval & 0x58000c00, popcount(keyval & 0x58000c00));
|
||||||
if((!keyval) || (popcount(keyval & 0x58000c00) & 1))
|
if((!keyval) || (popcount(keyval & 0x58000c00) & 1))
|
||||||
keyval ^= 0x80000000;
|
keyval ^= 0x80000000;
|
||||||
|
|
||||||
|
@ -7163,8 +7163,8 @@ static DRIVER_INIT( kf2k3pcb )
|
|||||||
neogeo_cmc50_m1_decrypt(machine);
|
neogeo_cmc50_m1_decrypt(machine);
|
||||||
|
|
||||||
/* extra little swap on the m1 - this must be performed AFTER the m1 decrypt
|
/* extra little swap on the m1 - this must be performed AFTER the m1 decrypt
|
||||||
or the m1 checksum (used to generate the key) for decrypting the m1 is
|
or the m1 checksum (used to generate the key) for decrypting the m1 is
|
||||||
incorrect */
|
incorrect */
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
UINT8* rom = memory_region(machine, "audio");
|
UINT8* rom = memory_region(machine, "audio");
|
||||||
|
@ -2557,7 +2557,7 @@ static void scanline_draw(running_machine *machine, bitmap_t *bitmap, const rect
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
sprite priority==playfield priority
|
sprite priority==playfield priority
|
||||||
GSEEKER (plane leaving hangar) --> sprite
|
GSEEKER (plane leaving hangar) --> sprite
|
||||||
BUBSYMPH (title) ---> sprite
|
BUBSYMPH (title) ---> sprite
|
||||||
DARIUSG (ZONE V' BOSS) ---> playfield
|
DARIUSG (ZONE V' BOSS) ---> playfield
|
||||||
*/
|
*/
|
||||||
|
@ -198,7 +198,7 @@ WRITE16_HANDLER( tx1_bankcs_w )
|
|||||||
if ( !(offset & 0x40) )
|
if ( !(offset & 0x40) )
|
||||||
{
|
{
|
||||||
/* TODO: Looks safe to remove this */
|
/* TODO: Looks safe to remove this */
|
||||||
// if ( offset & 2 )
|
// if ( offset & 2 )
|
||||||
tx1_vregs.h_val += tx1_vregs.h_inc;
|
tx1_vregs.h_val += tx1_vregs.h_inc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1073,7 +1073,7 @@ static void tx1_draw_objects(running_machine *machine, UINT8 *bitmap)
|
|||||||
else
|
else
|
||||||
color = ~ic162[prom_addr] & 0x3f;
|
color = ~ic162[prom_addr] & 0x3f;
|
||||||
|
|
||||||
// *BITMAP_ADDR16(bitmap, y, x) = machine->pens[TX1_COLORS_OBJ + color];
|
// *BITMAP_ADDR16(bitmap, y, x) = machine->pens[TX1_COLORS_OBJ + color];
|
||||||
*(bitmap + 768*y + x) = 0x40 | color;
|
*(bitmap + 768*y + x) = 0x40 | color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2122,11 +2122,11 @@ static void buggyboy_draw_objs(running_machine *machine, UINT8 *bitmap, int wide
|
|||||||
UINT32 low_addr = ((x_acc >> (FRAC + 3)) & x_mask);
|
UINT32 low_addr = ((x_acc >> (FRAC + 3)) & x_mask);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Objects are grouped by width (either 16, 8 or 4 tiles) in
|
Objects are grouped by width (either 16, 8 or 4 tiles) in
|
||||||
the LUT ROMs. The ROM address lines therefore indicate
|
the LUT ROMs. The ROM address lines therefore indicate
|
||||||
width and are used to determine the correct scan order
|
width and are used to determine the correct scan order
|
||||||
when x-flip is set.
|
when x-flip is set.
|
||||||
*/
|
*/
|
||||||
if (gxflip)
|
if (gxflip)
|
||||||
{
|
{
|
||||||
UINT32 xor_mask;
|
UINT32 xor_mask;
|
||||||
@ -2455,7 +2455,7 @@ VIDEO_UPDATE( buggyboy )
|
|||||||
memset(bb_obj_bmp, 0, 768*240);
|
memset(bb_obj_bmp, 0, 768*240);
|
||||||
|
|
||||||
buggyboy_draw_char(screen->machine, bb_chr_bmp, 1);
|
buggyboy_draw_char(screen->machine, bb_chr_bmp, 1);
|
||||||
// buggyboy_draw_road(screen->machine, bb_rod_bmp, 1);
|
// buggyboy_draw_road(screen->machine, bb_rod_bmp, 1);
|
||||||
buggyboy_draw_objs(screen->machine, bb_obj_bmp, 1);
|
buggyboy_draw_objs(screen->machine, bb_obj_bmp, 1);
|
||||||
|
|
||||||
bb_combine_layers(screen->machine, bitmap, 0);
|
bb_combine_layers(screen->machine, bitmap, 0);
|
||||||
|
@ -9,4 +9,4 @@
|
|||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
const char build_version[] = "0.127u4 ("__DATE__")";
|
const char build_version[] = "0.127u5 ("__DATE__")";
|
||||||
|
Loading…
Reference in New Issue
Block a user