mirror of
https://github.com/holub/mame
synced 2025-04-17 22:13:04 +03:00
konamigx: small cleanup to spacing
This commit is contained in:
parent
7feaa6968d
commit
90b86c79b6
@ -187,7 +187,8 @@
|
||||
- Tokimeki Memorial: wrong horizontal flip for mode select arrows;
|
||||
*/
|
||||
|
||||
static struct sprite_entry {
|
||||
static struct sprite_entry
|
||||
{
|
||||
int pri;
|
||||
uint32_t adr;
|
||||
} sprites[0x100];
|
||||
@ -197,14 +198,16 @@ void konamigx_state::generate_sprites(address_space &space, uint32_t src, uint32
|
||||
int scount = 0;
|
||||
int ecount = 0;
|
||||
|
||||
for(int i=0; i<count; i++) {
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
uint32_t adr = src + 0x100*i;
|
||||
int pri;
|
||||
if (!space.read_word(adr+2))
|
||||
continue;
|
||||
pri = space.read_word(adr+28);
|
||||
|
||||
if(pri < 256) {
|
||||
if (pri < 256)
|
||||
{
|
||||
sprites[ecount].pri = pri;
|
||||
sprites[ecount].adr = adr;
|
||||
ecount++;
|
||||
@ -212,9 +215,11 @@ void konamigx_state::generate_sprites(address_space &space, uint32_t src, uint32
|
||||
}
|
||||
//qsort(sprites, ecount, sizeof(struct sprite_entry), pri_comp);
|
||||
|
||||
for(int i=0; i<ecount; i++) {
|
||||
for (int i = 0; i < ecount; i++)
|
||||
{
|
||||
uint32_t adr = sprites[i].adr;
|
||||
if(adr) {
|
||||
if (adr)
|
||||
{
|
||||
uint32_t set =(space.read_word(adr) << 16)|space.read_word(adr+2);
|
||||
uint16_t glob_x = space.read_word(adr+4);
|
||||
uint16_t glob_y = space.read_word(adr+8);
|
||||
@ -230,19 +235,22 @@ void konamigx_state::generate_sprites(address_space &space, uint32_t src, uint32
|
||||
uint16_t v;
|
||||
|
||||
v = space.read_word(adr+24);
|
||||
if(v & 0x8000) {
|
||||
if (v & 0x8000)
|
||||
{
|
||||
color_mask = 0xf3ff;
|
||||
color_val |= (v & 3) << 10;
|
||||
}
|
||||
|
||||
v = space.read_word(adr+26);
|
||||
if(v & 0x8000) {
|
||||
if (v & 0x8000)
|
||||
{
|
||||
color_mask &= 0xfcff;
|
||||
color_val |= (v & 3) << 8;
|
||||
}
|
||||
|
||||
v = space.read_word(adr+18);
|
||||
if(v & 0x8000) {
|
||||
if (v & 0x8000)
|
||||
{
|
||||
color_mask &= 0xff1f;
|
||||
color_val |= v & 0xe0;
|
||||
}
|
||||
@ -263,14 +271,16 @@ void konamigx_state::generate_sprites(address_space &space, uint32_t src, uint32
|
||||
uint16_t count2 = space.read_word(set);
|
||||
|
||||
set += 2;
|
||||
while(count2) {
|
||||
while(count2)
|
||||
{
|
||||
uint16_t idx = space.read_word(set);
|
||||
uint16_t flip = space.read_word(set+2);
|
||||
uint16_t col = space.read_word(set+4);
|
||||
short y = space.read_word(set+6);
|
||||
short x = space.read_word(set+8);
|
||||
|
||||
if(idx == 0xffff) {
|
||||
if (idx == 0xffff)
|
||||
{
|
||||
set = (flip<<16) | col;
|
||||
if (set >= 0x200000 && set < 0xd00000)
|
||||
continue;
|
||||
@ -321,7 +331,8 @@ void konamigx_state::generate_sprites(address_space &space, uint32_t src, uint32
|
||||
}
|
||||
}
|
||||
}
|
||||
while(scount < 256) {
|
||||
while(scount < 256)
|
||||
{
|
||||
space.write_word(spr, scount);
|
||||
scount++;
|
||||
spr += 16;
|
||||
@ -395,7 +406,8 @@ void konamigx_state::esc_w(address_space &space, uint32_t data)
|
||||
opcode = space.read_byte(data+8);
|
||||
params = (space.read_word(data+12) << 16) | space.read_word(data+14);
|
||||
|
||||
switch(opcode) {
|
||||
switch (opcode)
|
||||
{
|
||||
case 5: // Reset
|
||||
break;
|
||||
case 2: // Load program
|
||||
@ -414,7 +426,8 @@ void konamigx_state::esc_w(address_space &space, uint32_t data)
|
||||
*/
|
||||
break;
|
||||
case 1: // Run program
|
||||
if(m_esc_cb) {
|
||||
if (m_esc_cb)
|
||||
{
|
||||
uint32_t p1 = (space.read_word(params+0)<<16) | space.read_word(params+2);
|
||||
uint32_t p2 = (space.read_word(params+4)<<16) | space.read_word(params+6);
|
||||
uint32_t p3 = (space.read_word(params+8)<<16) | space.read_word(params+10);
|
||||
|
@ -255,7 +255,6 @@ protected:
|
||||
|
||||
u8 m_current_brightness = 0xff;
|
||||
u8 m_brightness[3]{};
|
||||
|
||||
u8 m_last_alpha_tile_mix_code = 0;
|
||||
|
||||
// mirrored K054338 settings
|
||||
|
@ -337,6 +337,7 @@ static const uint8_t ptable[7][8] =
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
#define EXTRACT_ODD \
|
||||
if ((data1 = obj[0]) & 0x8000) \
|
||||
{ \
|
||||
@ -495,7 +496,8 @@ void konamigx_state::fantjour_dma_w(offs_t offset, uint32_t data, uint32_t mem_m
|
||||
{
|
||||
auto &mspace = m_maincpu->space(AS_PROGRAM);
|
||||
COMBINE_DATA(m_fantjour_dma + offset);
|
||||
if (!offset && ACCESSING_BITS_24_31) {
|
||||
if (!offset && ACCESSING_BITS_24_31)
|
||||
{
|
||||
uint32_t sa = m_fantjour_dma[1];
|
||||
// uint16_t ss = (m_fantjour_dma[2] & 0xffff0000) >> 16;
|
||||
// uint32_t sb = ((m_fantjour_dma[2] & 0xffff) << 16) | ((m_fantjour_dma[3] & 0xffff0000) >> 16);
|
||||
@ -512,6 +514,7 @@ void konamigx_state::fantjour_dma_w(offs_t offset, uint32_t data, uint32_t mem_m
|
||||
uint32_t i1, i2;
|
||||
|
||||
if (mode == 0x93)
|
||||
{
|
||||
for (i1 = 0; i1 <= sz2; i1++)
|
||||
for (i2 = 0; i2 < db; i2 += 4)
|
||||
{
|
||||
@ -519,7 +522,9 @@ void konamigx_state::fantjour_dma_w(offs_t offset, uint32_t data, uint32_t mem_m
|
||||
da += 4;
|
||||
sa += 4;
|
||||
}
|
||||
}
|
||||
else if (mode == 0x8f)
|
||||
{
|
||||
for (i1 = 0; i1 <= sz2; i1++)
|
||||
for (i2 = 0; i2 < db; i2 += 4)
|
||||
{
|
||||
@ -528,3 +533,4 @@ void konamigx_state::fantjour_dma_w(offs_t offset, uint32_t data, uint32_t mem_m
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ inline int konamigx_state::K055555GX_decode_objcolor(int c18) // (see p.59 7.2.2
|
||||
c18 &= opon;
|
||||
ocb &=~opon;
|
||||
|
||||
return((ocb | c18) >> m_k053247_coregshift);
|
||||
return (ocb | c18) >> m_k053247_coregshift;
|
||||
}
|
||||
|
||||
inline int konamigx_state::K055555GX_decode_inpri(int c18) // (see p.59 7.2.2)
|
||||
@ -92,7 +92,7 @@ inline int konamigx_state::K055555GX_decode_inpri(int c18) // (see p.59 7.2.2)
|
||||
op &= m_oinprion;
|
||||
c18 &=~m_oinprion;
|
||||
|
||||
return(c18 | op);
|
||||
return c18 | op;
|
||||
}
|
||||
|
||||
K055673_CB_MEMBER(konamigx_state::type2_sprite_callback)
|
||||
@ -185,7 +185,7 @@ int konamigx_state::K055555GX_decode_vmixcolor(int layer, int *color) // (see p.
|
||||
if (von == 3) emx = -1; // invalidate external mix code if all bits are from internal
|
||||
*color = pal;
|
||||
|
||||
return(emx);
|
||||
return emx;
|
||||
}
|
||||
|
||||
int konamigx_state::K055555GX_decode_osmixcolor(int layer, int *color) // (see p.63, p.49-50 and p.27 3.3)
|
||||
@ -250,7 +250,6 @@ void konamigx_state::wipezbuf(int noshadow)
|
||||
void konamigx_state::set_brightness(int layer)
|
||||
{
|
||||
const uint8_t bri_mode = (m_k055555->K055555_read_register(K55_VBRI) >> layer * 2) & 0b11;
|
||||
|
||||
const uint8_t new_brightness = bri_mode ? m_brightness[bri_mode - 1] : 0xff;
|
||||
|
||||
if (m_current_brightness != new_brightness)
|
||||
@ -336,8 +335,6 @@ void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap,
|
||||
tilemap_t *sub2, int sub2flags,
|
||||
int mixerflags, bitmap_ind16 *extra_bitmap, int rushingheroes_hack)
|
||||
{
|
||||
// int prflp;
|
||||
|
||||
// buffer can move when it's resized, so refresh the pointer
|
||||
m_gx_objzbuf = &screen.priority().pix(0);
|
||||
|
||||
@ -355,13 +352,12 @@ void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap,
|
||||
if (!disp) return;
|
||||
uint16_t cltc_shdpri = m_k054338->register_r(K338_REG_CONTROL);
|
||||
|
||||
|
||||
if (!rushingheroes_hack) // Slam Dunk 2 never sets this. It's either part of the protection, or type4 doesn't use it
|
||||
// Slam Dunk 2 never sets this. It's either part of the protection, or type4 doesn't use it
|
||||
if (!rushingheroes_hack)
|
||||
{
|
||||
if (!(cltc_shdpri & K338_CTL_KILL)) return;
|
||||
}
|
||||
|
||||
|
||||
// demote shadows by one layer when this bit is set??? (see p.73 8.6)
|
||||
cltc_shdpri &= K338_CTL_SHDPRI;
|
||||
|
||||
@ -377,9 +373,8 @@ void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap,
|
||||
// init OBJSET2 and mixer parameters (see p.51 and chapter 7)
|
||||
uint8_t layerid[6] = { 0, 1, 2, 3, 4, 5 };
|
||||
|
||||
|
||||
// invert layer priority when this flag is set (not used by any GX game?)
|
||||
//prflp = K055555_read_register(K55_CONTROL) & K55_CTL_FLIPPRI;
|
||||
//int prflp = K055555_read_register(K55_CONTROL) & K55_CTL_FLIPPRI;
|
||||
|
||||
uint8_t layerpri[6];
|
||||
layerpri[0] = m_k055555->K055555_read_register(K55_PRIINP_0);
|
||||
@ -420,9 +415,8 @@ void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap,
|
||||
int k = 0;
|
||||
if (!(mixerflags & GXMIX_NOSHADOW))
|
||||
{
|
||||
int i,j;
|
||||
// only enable shadows beyond a +/-7 RGB threshold
|
||||
for (j=0,i=0; i<3; j+=3,i++)
|
||||
for (int j = 0, i = 0; i < 3; j += 3, i++)
|
||||
{
|
||||
k = m_K054338_shdRGB[j ]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
|
||||
k = m_K054338_shdRGB[j+1]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
|
||||
@ -431,7 +425,7 @@ void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap,
|
||||
|
||||
// SHDON specifies layers on which shadows can be projected (see detail on p.65 7.2.8)
|
||||
int temp = m_k055555->K055555_read_register(K55_SHD_ON);
|
||||
for (i=0; i<4; i++) if (!(temp>>i & 1) && spri_min < layerpri[i]) spri_min = layerpri[i]; // HACK
|
||||
for (int i = 0; i < 4; i++) if (!BIT(temp, i) && spri_min < layerpri[i]) spri_min = layerpri[i]; // HACK
|
||||
|
||||
// update shadows status
|
||||
m_k054338->update_all_shadows(rushingheroes_hack, *m_palette);
|
||||
@ -618,9 +612,7 @@ void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap,
|
||||
return a.order > b.order;
|
||||
});
|
||||
|
||||
konamigx_mixer_draw(screen,bitmap,cliprect,sub1,sub1flags,sub2,sub2flags,mixerflags,extra_bitmap,rushingheroes_hack,
|
||||
objpool
|
||||
);
|
||||
konamigx_mixer_draw(screen, bitmap, cliprect, sub1, sub1flags, sub2, sub2flags, mixerflags, extra_bitmap, rushingheroes_hack, objpool);
|
||||
}
|
||||
|
||||
void konamigx_state::konamigx_mixer_draw(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect,
|
||||
@ -945,7 +937,6 @@ TILE_GET_INFO_MEMBER(konamigx_state::get_gx_psac3_tile_info)
|
||||
// if (m_konamigx_type3_psac2_actual_bank)
|
||||
// base_index+=0x20000/2;
|
||||
|
||||
|
||||
tileno = tmap[base_index*2] | ((tmap[(base_index*2) + 1] & 0x0f) << 8);
|
||||
colour = (tmap[(base_index*2) + 1] & 0xc0) >> 6;
|
||||
|
||||
@ -966,7 +957,6 @@ TILE_GET_INFO_MEMBER(konamigx_state::get_gx_psac3_alt_tile_info)
|
||||
// if (m_konamigx_type3_psac2_actual_bank)
|
||||
// base_index+=0x20000/2;
|
||||
|
||||
|
||||
tileno = tmap[base_index*2] | ((tmap[(base_index*2) + 1] & 0x0f) << 8);
|
||||
colour = (tmap[(base_index*2) + 1] & 0xc0) >> 6;
|
||||
|
||||
@ -1050,7 +1040,8 @@ K056832_CB_MEMBER(konamigx_state::type2_tile_callback)
|
||||
K056832_CB_MEMBER(konamigx_state::salmndr2_tile_callback)
|
||||
{
|
||||
const uint8_t mix_code = attr >> 4 & 0b11;
|
||||
if (mix_code) {
|
||||
if (mix_code)
|
||||
{
|
||||
*priority = 1;
|
||||
m_last_alpha_tile_mix_code = mix_code;
|
||||
}
|
||||
@ -1064,7 +1055,8 @@ K056832_CB_MEMBER(konamigx_state::salmndr2_tile_callback)
|
||||
K056832_CB_MEMBER(konamigx_state::alpha_tile_callback)
|
||||
{
|
||||
const uint8_t mix_code = attr >> 6 & 0b11;
|
||||
if (mix_code) {
|
||||
if (mix_code)
|
||||
{
|
||||
*priority = 1;
|
||||
m_last_alpha_tile_mix_code = mix_code;
|
||||
}
|
||||
@ -1129,6 +1121,7 @@ void konamigx_state::common_init()
|
||||
save_item(NAME(m_osmixon));
|
||||
save_item(NAME(m_current_brightness));
|
||||
save_item(NAME(m_brightness));
|
||||
save_item(NAME(m_last_alpha_tile_mix_code));
|
||||
|
||||
m_gx_tilemode = 0;
|
||||
|
||||
@ -1155,7 +1148,7 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_5bpp)
|
||||
{
|
||||
common_init();
|
||||
|
||||
if (!strcmp(machine().system().name,"tbyahhoo"))
|
||||
if (!strcmp(machine().system().name, "tbyahhoo") || !strcmp(machine().system().name, "mtwinbee"))
|
||||
m_gx_tilemode = 1;
|
||||
else if (!strcmp(machine().system().name, "crzcross") || !strcmp(machine().system().name, "puzldama"))
|
||||
konamigx_mixer_primode(5);
|
||||
@ -1202,11 +1195,9 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type3)
|
||||
m_gx_rozenable = 0;
|
||||
m_gx_specialrozenable = 2;
|
||||
|
||||
|
||||
/* set up tile layers */
|
||||
m_type3_roz_temp_bitmap = std::make_unique<bitmap_ind16>(width, height);
|
||||
|
||||
|
||||
//m_gx_psac_tilemap->set_flip(TILEMAP_FLIPX| TILEMAP_FLIPY);
|
||||
|
||||
K053936_wraparound_enable(0, 1);
|
||||
@ -1291,13 +1282,11 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4_sd2)
|
||||
m_gx_rozenable = 0;
|
||||
m_gx_specialrozenable = 3;
|
||||
|
||||
|
||||
m_k056832->set_layer_offs(0, -29, -1);
|
||||
m_k056832->set_layer_offs(1, -27, -1);
|
||||
m_k056832->set_layer_offs(2, -26, -1);
|
||||
m_k056832->set_layer_offs(3, -24, -1);
|
||||
|
||||
|
||||
K053936_wraparound_enable(0, 0);
|
||||
K053936GP_set_offset(0, -36, -1);
|
||||
|
||||
@ -1329,10 +1318,8 @@ VIDEO_START_MEMBER(konamigx_state, opengolf)
|
||||
m_gxtype1_roz_dstbitmap = std::make_unique<bitmap_ind16>(512, 512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
|
||||
m_gxtype1_roz_dstbitmap2 = std::make_unique<bitmap_ind16>(512, 512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
|
||||
|
||||
|
||||
m_gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
|
||||
|
||||
|
||||
K053936_wraparound_enable(0, 1);
|
||||
K053936GP_set_offset(0, 0, 0);
|
||||
|
||||
@ -1364,10 +1351,8 @@ VIDEO_START_MEMBER(konamigx_state, racinfrc)
|
||||
m_gxtype1_roz_dstbitmap = std::make_unique<bitmap_ind16>(512, 512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
|
||||
m_gxtype1_roz_dstbitmap2 = std::make_unique<bitmap_ind16>(512, 512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
|
||||
|
||||
|
||||
m_gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
|
||||
|
||||
|
||||
K053936_wraparound_enable(0, 1);
|
||||
K053936GP_set_offset(0, 0, 0);
|
||||
|
||||
@ -1437,8 +1422,6 @@ uint32_t konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rg
|
||||
K053936_0_zoom_draw(screen, *m_gxtype1_roz_dstbitmap2,m_gxtype1_roz_dstbitmapclip,m_gx_psac_tilemap2, 0, 0, 0); // colour data (+ some voxel height data?)
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (m_gx_specialrozenable == 3)
|
||||
{
|
||||
konamigx_mixer(screen, bitmap, cliprect, m_gx_psac_tilemap, GXSUB_8BPP,nullptr,0, 0, nullptr, m_gx_rushingheroes_hack);
|
||||
@ -1522,11 +1505,9 @@ uint32_t konamigx_state::screen_update_konamigx_left(screen_device &screen, bitm
|
||||
{
|
||||
for (offset = 0; offset < 0x8000/4; offset++)
|
||||
{
|
||||
int r,g,b;
|
||||
|
||||
r = (m_generic_paletteram_32[offset] >>16) & 0xff;
|
||||
g = (m_generic_paletteram_32[offset] >> 8) & 0xff;
|
||||
b = (m_generic_paletteram_32[offset] >> 0) & 0xff;
|
||||
int r = (m_generic_paletteram_32[offset] >>16) & 0xff;
|
||||
int g = (m_generic_paletteram_32[offset] >> 8) & 0xff;
|
||||
int b = (m_generic_paletteram_32[offset] >> 0) & 0xff;
|
||||
|
||||
m_palette->set_pen_color(offset,rgb_t(r,g,b));
|
||||
}
|
||||
@ -1567,11 +1548,9 @@ uint32_t konamigx_state::screen_update_konamigx_right(screen_device &screen, bit
|
||||
{
|
||||
for (offset = 0; offset < 0x8000/4; offset++)
|
||||
{
|
||||
int r,g,b;
|
||||
|
||||
r = (m_subpaletteram32[offset] >>16) & 0xff;
|
||||
g = (m_subpaletteram32[offset] >> 8) & 0xff;
|
||||
b = (m_subpaletteram32[offset] >> 0) & 0xff;
|
||||
int r = (m_subpaletteram32[offset] >>16) & 0xff;
|
||||
int g = (m_subpaletteram32[offset] >> 8) & 0xff;
|
||||
int b = (m_subpaletteram32[offset] >> 0) & 0xff;
|
||||
|
||||
m_palette->set_pen_color(offset,rgb_t(r,g,b));
|
||||
}
|
||||
|
@ -51,12 +51,11 @@ private:
|
||||
int m_roz_rombank = 0;
|
||||
tilemap_t *m_ult_936_tilemap = nullptr;
|
||||
uint16_t m_clip = 0;
|
||||
uint8_t m_last_alpha_tile_mix_code = 0;
|
||||
|
||||
uint8_t m_sound_ctrl = 0;
|
||||
uint8_t m_sound_nmi_clk = 0;
|
||||
|
||||
uint8_t m_last_alpha_tile_mix_code = 0;
|
||||
|
||||
uint16_t eeprom_r(offs_t offset, uint16_t mem_mask = ~0);
|
||||
void mweeprom_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
||||
uint16_t dddeeprom_r(offs_t offset, uint16_t mem_mask = ~0);
|
||||
|
Loading…
Reference in New Issue
Block a user