Previous 15994 Revisions Next

r6887 Sunday 3rd January, 2010 at 05:23:34 UTC by Harmony
[ACAN] Rudimentary input hookup. It's now possible to get in-game, albeit with badly corrupted graphics. [Harmony]
[src/mess/drivers]supracan.c

src/mess/drivers/supracan.c
r6886r6887
2424#include "cpu/m68000/m68000.h"
2525#include "cpu/m6502/m6502.h"
2626#include "devices/cartslot.h"
27#include "debugger.h"
2728
2829static UINT16 supracan_m6502_reset;
2930static UINT8 *supracan_soundram;
r6886r6887
147148   }
148149
149150   {
150      int x,y,xtile,ytile,xsize,ysize,spr_offs,col,i,spr_base;
151      int x,y,xtile,ytile,xsize,ysize,bank,spr_offs,col,i,spr_base;
151152      //UINT8 *sprdata = (UINT8*)(&supracan_vram[0x1d000/2]);
152153
153154      spr_base = 0x1d000;
r6886r6887
158159         y = supracan_vram[i+0] & 0x0ff;
159160         spr_offs = supracan_vram[i+3] << 2;
160161         col = (supracan_vram[i+1] & 0x000f);
162         bank = (supracan_vram[i+1] & 0xf000) >> 12;
161163
162164         if(supracan_vram[i+3] != 0)
163165         {
r6886r6887
174176                  ysize = 4;
175177                  break;
176178               case 0x4028:
177                  xsize = 4;
179                  xsize = 10;
178180                  ysize = 1;
179181                  break;
180182               case 0x4228:
r6886r6887
187189                  break;
188190               case 0x422e:
189191                  xsize = 2;
190                  ysize = 4;
192                  ysize = 2;
191193                  break;
192194               case 0x442a:
193195                  xsize = 4;
r6886r6887
197199                  xsize = 3;
198200                  ysize = 1;
199201                  break;
202               case 0x442c:
203                  xsize = 8;
204                  ysize = 8;
205                  break;
206               case 0x4628:
207                  xsize = 8;
208                  ysize = 8;
209                  break;
200210               case 0x462a:
201211                  xsize = 4;
202212                  ysize = 4;
r6886r6887
206216                  ysize = 5;
207217                  break;
208218               case 0x5028:
209                  xsize = 8;
210                  ysize = 1;
219                  xsize = 16;
220                  ysize = 9;
211221                  break;
212222               case 0x522a:
213                  xsize = 4;
214                  ysize = 1;
223                  xsize = 16;
224                  ysize = 9;
215225                  break;
216226               default:
217227                  printf( "Unknown size: %04x\n", (supracan_vram[i+0] & 0xff00) | (supracan_vram[i+2] >> 8));
r6886r6887
224234               for(xtile = 0; xtile < xsize; xtile++)
225235               {
226236                  UINT16 data = supracan_vram[spr_offs/2+ytile*xsize+xtile];
227                  int tile = 0x400 + (data & 0x03ff);
237                  int tile = (bank * 0x200) + (data & 0x03ff);
228238                  int xflip = data & 0x0800;
229239                  int yflip = data & 0x0400;
230240                  drawgfx_transpen(bitmap,cliprect,screen->machine->gfx[1],tile,col,xflip,yflip,x+xtile*8,y+ytile*8,0);
r6886r6887
330340}
331341#endif
332342
343static READ16_HANDLER( supracan_inp0_r )
344{
345   return input_port_read(space->machine, "INP0");
346}
347
333348static ADDRESS_MAP_START( supracan_mem, ADDRESS_SPACE_PROGRAM, 16 )
334349   AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_REGION( "cart", 0 )
350   AM_RANGE( 0xe80200, 0xe80201 ) AM_READ( supracan_inp0_r )
335351   AM_RANGE( 0xe80204, 0xe80205 ) AM_READ( supracan_unk1_r )
336352   AM_RANGE( 0xe80300, 0xe80301 ) AM_READ( supracan_unk1_r )
337353   AM_RANGE( 0xe88400, 0xe8efff ) AM_RAM   /* sample table + sample data */
r6886r6887
369385}
370386
371387static INPUT_PORTS_START( supracan )
388   PORT_START("INP0")
389   PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_UNKNOWN)
390   PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_UNKNOWN) //PORT_PLAYER(1) PORT_NAME("P1 Joypad Button 1")
391   PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_UNKNOWN)
392   PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_UNKNOWN)
393   PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_UNKNOWN)
394   PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_UNKNOWN)
395   PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_UNKNOWN)
396   PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN)
397   PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_PLAYER(1) PORT_NAME("P1 Joypad Right")
398   PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT) PORT_PLAYER(1) PORT_NAME("P1 Joypad Left")
399   PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_PLAYER(1) PORT_NAME("P1 Joypad Down")
400   PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_PLAYER(1) PORT_NAME("P1 Joypad Up")
401   PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_UNKNOWN)
402   PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_UNKNOWN)
403   PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_UNKNOWN)
404   PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(1) PORT_NAME("P1 Joypad B1")
372405INPUT_PORTS_END
373406
374407

Previous 15994 Revisions Next


© 1998-2018 The MESS Team