konamigx: small cleanup to spacing

This commit is contained in:
hap 2025-04-01 13:49:41 +02:00
parent 7feaa6968d
commit 90b86c79b6
5 changed files with 319 additions and 323 deletions

View File

@ -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);

View File

@ -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

View File

@ -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
}
}
}
}

View File

@ -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));
}

View File

@ -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);