Previous 199869 Revisions Next

r21818 Wednesday 13th March, 2013 at 07:46:19 UTC by David Haywood
popobear - fixed resolution + sprites are always square.
[src/mame/drivers]popobear.c

trunk/src/mame/drivers/popobear.c
r21817r21818
183183   // ERROR: This cast is NOT endian-safe without the use of BYTE/WORD/DWORD_XOR_* macros!
184184   UINT8* vram = reinterpret_cast<UINT8 *>(m_spr.target());
185185   int i;
186   #if 0
187   static int bank_test = 1;
188186
189   if(machine().input().code_pressed_once(KEYCODE_Z))
190      bank_test<<=1;
191
192   if(machine().input().code_pressed_once(KEYCODE_X))
193      bank_test>>=1;
194
195   popmessage("%02x",bank_test);
196   #endif
197
198187   /*
199188   ???? ---- ---- ---- unused?
200189   ---- xxxx ---- ---- priority?
201190   ---- ---- x--- ---- Y direction
202191   ---- ---- -x-- ---- X direction
203   ---- ---- --xx ---- width
192   ---- ---- --xx ---- size (height & width)
204193   ---- ---- ---- xx-- color bank
205   ---- ---- ---- --xx height?
194   ---- ---- ---- --xx ??
206195   */
207196
208197   /* 0x106 = 8 x 8 */
r21817r21818
214203      int spr_num = vram[i+0x7f800+6]|(vram[i+0x7f800+7]<<8);
215204      int param = vram[i+0x7f800+0]|(vram[i+0x7f800+1]<<8);
216205      int width = 8 << ((param & 0x30)>>4);
217      int height = 32;
206      int height = width; // sprites are always square?
207
218208      int color_bank = ((param & 0xc)<<4);
219209      int x_dir = param & 0x40;
220210      int y_dir = param & 0x80;
221211
222      if((param & 0x3) == 3) // actually sprite mode?
223         color_bank |= 0x20;
212      if (x&0x8000) x-= 0x10000;
213      if (y&0x8000) y-= 0x10000;
224214
225215      if(param == 0)
226216         continue;
227217
228      //if(param & bank_test)
229      //  continue;
230
231218      spr_num <<= 3;
232219
233220      for(int yi=0;yi<height;yi++)
r21817r21818
316303
317304   AM_RANGE(0x600000, 0x600001) AM_WRITENOP
318305   AM_RANGE(0x620000, 0x620001) AM_READ8(popo_620000_r,0xff00) AM_WRITENOP
319   AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("gfx1", 0) // u5 & u6
320   AM_RANGE(0xa00000, 0xbfffff) AM_ROM AM_REGION("gfx2", 0) // u7 & u8
306   AM_RANGE(0x800000, 0xbfffff) AM_ROM
321307ADDRESS_MAP_END
322308
323309static INPUT_PORTS_START( popobear )
r21817r21818
465451   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
466452   MCFG_SCREEN_UPDATE_DRIVER(popobear_state, screen_update_popobear)
467453
468//  MCFG_GFXDECODE(popobear)
469
470454   MCFG_SCREEN_SIZE(128*8, 32*8)
471   MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
455   MCFG_SCREEN_VISIBLE_AREA(0, 479, 0, 239)
472456   MCFG_PALETTE_LENGTH(256*2)
473457
474
475458   MCFG_SPEAKER_STANDARD_MONO("mono")
476459
477460   MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_42MHz/16)  // XTAL CORRECT, DIVISOR GUESSED
r21817r21818
483466
484467
485468ROM_START( popobear )
486   ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 Code */
487   ROM_LOAD16_BYTE( "popobear_en-a-301_1.6.u3", 0x000001, 0x20000, CRC(b934adf6) SHA1(93431c7a19af812b549aad35cc1176a81805ffab) )
488   ROM_LOAD16_BYTE( "popobear_en-a-401_1.6.u4", 0x000000, 0x20000, CRC(0568af9c) SHA1(920531dbc4bbde2d1db062bd5c48b97dd50b7185) )
469   ROM_REGION( 0x1000000, "maincpu", 0 ) /* 68000 Code + gfx data */
470   ROM_LOAD16_BYTE( "popobear_en-a-301_1.6.u3", 0x000001, 0x020000, CRC(b934adf6) SHA1(93431c7a19af812b549aad35cc1176a81805ffab) )
471   ROM_LOAD16_BYTE( "popobear_en-a-401_1.6.u4", 0x000000, 0x020000, CRC(0568af9c) SHA1(920531dbc4bbde2d1db062bd5c48b97dd50b7185) )
472   ROM_LOAD16_BYTE( "popobear_en-a-501.u5",     0x800001, 0x100000, CRC(185901a9) SHA1(7ff82b5751645df53435eaa66edce589684cc5c7) )
473   ROM_LOAD16_BYTE( "popobear_en-a-601.u6",     0x800000, 0x100000, CRC(84fa9f3f) SHA1(34dd7873f88b0dae5fb81fe84e82d2b6b49f7332) )
474   ROM_LOAD16_BYTE( "popobear_en-a-701.u7",     0xa00001, 0x100000, CRC(45eba6d0) SHA1(0278602ed57ac45040619d590e6cc85e2cfeed31) )
475   ROM_LOAD16_BYTE( "popobear_en-a-801.u8",     0xa00000, 0x100000, CRC(2760f2e6) SHA1(58af59f486c9df930f7c124f89154f8f389a5bd7) )
489476
490   ROM_REGION( 0x200000, "gfx1", 0 )
491   ROM_LOAD16_BYTE( "popobear_en-a-501.u5", 0x000000, 0x100000, CRC(185901a9) SHA1(7ff82b5751645df53435eaa66edce589684cc5c7) )
492   ROM_LOAD16_BYTE( "popobear_en-a-601.u6", 0x000001, 0x100000, CRC(84fa9f3f) SHA1(34dd7873f88b0dae5fb81fe84e82d2b6b49f7332) )
493
494   ROM_REGION( 0x200000, "gfx2", 0 )
495   ROM_LOAD16_BYTE( "popobear_en-a-701.u7", 0x000000, 0x100000, CRC(45eba6d0) SHA1(0278602ed57ac45040619d590e6cc85e2cfeed31) )
496   ROM_LOAD16_BYTE( "popobear_en-a-801.u8", 0x000001, 0x100000, CRC(2760f2e6) SHA1(58af59f486c9df930f7c124f89154f8f389a5bd7) )
497
498477   ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
499478   ROM_LOAD( "popobear_ta-a-901.u9", 0x00000, 0x40000,  CRC(f1e94926) SHA1(f4d6f5b5811d90d0069f6efbb44d725ff0d07e1c) )
500479ROM_END

Previous 199869 Revisions Next


© 1997-2024 The MAME Team