Previous 199869 Revisions Next

r18736 Saturday 27th October, 2012 at 17:36:53 UTC by Miodrag Milanović
more amiga movement + fixes by haze (nw)
[src/mame/drivers]cd32.c
[src/mame/includes]amiga.h
[src/mame/machine]amiga.c
[src/mess]mess.lst mess.mak
[src/mess/drivers]a3000.c amiga.c

trunk/src/mame/machine/amiga.c
r18735r18736
239239   state->m_intf = intf;
240240
241241   /* setup chipmem handlers */
242   if ( IS_AGA(intf) )
242   if ( IS_32BIT(intf) )
243243   {
244244      state->m_chip_ram_r = amiga_chip_ram32_r;
245245      state->m_chip_ram_w = amiga_chip_ram32_w;
trunk/src/mame/includes/amiga.h
r18735r18736
319319#define AGA_CHIP_RAM_MASK      0x1ffffe
320320
321321#define FLAGS_AGA_CHIPSET   (1 << 0)
322#define FLAGS_IS_32BIT      (1 << 1)
322323
323324struct amiga_machine_interface
324325{
r18735r18736
340341#define IS_AGA(intf) ( intf->chip_ram_mask == AGA_CHIP_RAM_MASK && (( intf->flags & FLAGS_AGA_CHIPSET) != 0))
341342#define IS_ECS(intf) ( intf->chip_ram_mask == ECS_CHIP_RAM_MASK && (( intf->flags & FLAGS_AGA_CHIPSET) == 0))
342343#define IS_ECS_OR_AGA(intf) ( intf->chip_ram_mask == ECS_CHIP_RAM_MASK)
344#define IS_32BIT(intf) (( intf->flags & FLAGS_IS_32BIT) != 0)
343345
344346struct amiga_autoconfig_device
345347{
r18735r18736
429431   DECLARE_DRIVER_INIT(mquake);
430432   DECLARE_DRIVER_INIT(amiga);
431433   DECLARE_DRIVER_INIT(cdtv);
434   DECLARE_DRIVER_INIT(a3000);
432435   DECLARE_MACHINE_RESET(mquake);
433436   DECLARE_MACHINE_RESET(amiga);
434437   DECLARE_VIDEO_START(amiga);
trunk/src/mame/drivers/cd32.c
r18735r18736
847847      NULL,
848848      NULL, NULL,
849849      NULL,
850      FLAGS_AGA_CHIPSET
850      FLAGS_AGA_CHIPSET | FLAGS_IS_32BIT
851851   };
852852
853853   /* configure our Amiga setup */
trunk/src/mess/mess.lst
r18735r18736
654654ami500pln //
655655ami600    // Commodore Amiga 600
656656ami600n   //
657ami3000   // Commodore Amiga 3000
658ami3000n  //
657659ami1200     // Commodore Amiga 1200
658660ami1200n  //
659661cdtv     // Commodore CDTV
660
661a3000    // Commodore Amiga 3000
662
663662cd32     // Commodore Amiga CD32
664663
665664c65      // 1991 C65 / C64DX (Prototype, NTSC)
trunk/src/mess/drivers/a3000.c
r18735r18736
1/***************************************************************************
2
3    Commodore Amiga 3000
4
5    Skeleton driver
6
7***************************************************************************/
8
9#include "emu.h"
10#include "cpu/m68000/m68000.h"
11
12
13class a3000_state : public driver_device
14{
15public:
16   a3000_state(const machine_config &mconfig, device_type type, const char *tag)
17      : driver_device(mconfig, type, tag) { }
18
19   UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
20   {
21      return 0;
22   }
23};
24
25
26
27/***************************************************************************
28    CONSTANTS
29***************************************************************************/
30
31#define XTAL_U104   XTAL_32MHz
32
33
34/***************************************************************************
35    ADDRESS MAPS
36***************************************************************************/
37
38static ADDRESS_MAP_START( a3000_mem, AS_PROGRAM, 32, a3000_state )
39   ADDRESS_MAP_UNMAP_HIGH
40   AM_RANGE(0x000000, 0x1fffff) AM_RAMBANK("chipram")
41   AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
42ADDRESS_MAP_END
43
44
45/***************************************************************************
46    INPUT PORTS
47***************************************************************************/
48
49static INPUT_PORTS_START( a3000 )
50INPUT_PORTS_END
51
52
53/***************************************************************************
54    MACHINE DRIVERS
55***************************************************************************/
56
57static MACHINE_CONFIG_START( a3000, a3000_state )
58   MCFG_CPU_ADD("maincpu", M68030, XTAL_U104 / 2)
59   MCFG_CPU_PROGRAM_MAP(a3000_mem)
60
61   MCFG_SCREEN_ADD("screen", RASTER)
62   MCFG_SCREEN_REFRESH_RATE(60)
63   MCFG_SCREEN_UPDATE_DRIVER(a3000_state, screen_update)
64   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
65   MCFG_SCREEN_SIZE(512*2, 312)
66   MCFG_SCREEN_VISIBLE_AREA((129-8-8)*2, (449+8-1+8)*2, 44-8, 300+8-1)
67MACHINE_CONFIG_END
68
69
70/***************************************************************************
71    ROM DEFINITIONS
72***************************************************************************/
73
74/* Note: I think those ROMs are correct, but they should be verified */
75ROM_START( a3000 )
76   ROM_REGION32_BE(0x80000, "kickstart", 0)
77   ROM_DEFAULT_BIOS("kick14")
78   ROM_SYSTEM_BIOS(0, "kick14", "Kickstart 1.4 (36.16)")
79   /* COPYRIGHT 1990 CAI // ALL RIGHTS RESERVED // ALPHA 5 ROM 0 CS=9713 */
80   ROMX_LOAD("390629-02.u182", 0x00000, 0x40000, CRC(58327536) SHA1(d1713d7f31474a5948e6d488e33686061cf3d1e2), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1))
81   /* COPYRIGHT 1990 CAI // ALL RIGHTS RESERVED // ALPHA 5 ROM 1 CS=9B21 */
82   ROMX_LOAD("390630-02.u183", 0x00002, 0x40000, CRC(fe2f7fb9) SHA1(c05c9c52d014c66f9019152b3f2a2adc2c678794), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1))
83   ROM_SYSTEM_BIOS(1, "kick204", "Kickstart 2.04 (37.175)")
84   ROMX_LOAD("390629-03.u182", 0x00000, 0x40000, CRC(a245dbdf) SHA1(83bab8e95d378b55b0c6ae6561385a96f638598f), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2))
85   ROMX_LOAD("390630-03.u183", 0x00002, 0x40000, CRC(7db1332b) SHA1(48f14b31279da6757848df6feb5318818f8f576c), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2))
86   ROM_SYSTEM_BIOS(2, "kick31", "Kickstart 3.1 (40.68)")
87   ROMX_LOAD("kick31.u182",    0x00000, 0x40000, CRC(286b9a0d) SHA1(6763a2258ec493f7408cf663110dae9a17803ad1), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(3))
88   ROMX_LOAD("kick31.u183",    0x00002, 0x40000, CRC(0b8cde6a) SHA1(5f02e97b48ebbba87d516a56b0400c6fc3434d8d), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(3))
89ROM_END
90
91
92/***************************************************************************
93    GAME DRIVERS
94***************************************************************************/
95
96/*    YEAR  NAME   PARENT  COMPAT  MACHINE  INPUT  INIT  COMPANY      FULLNAME      FLAGS */
97COMP( 1990, a3000, 0,      0,      a3000,   a3000, driver_device, 0,    "Commodore Business Machines", "Amiga 3000", GAME_NOT_WORKING | GAME_NO_SOUND )
trunk/src/mess/drivers/amiga.c
r18735r18736
176176   AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0)   /* Kickstart */
177177ADDRESS_MAP_END
178178
179static ADDRESS_MAP_START( amiga_mem32, AS_PROGRAM, 32, ami1200_state )
180   ADDRESS_MAP_UNMAP_HIGH
181//   ADDRESS_MAP_GLOBAL_MASK(0xffffff) // not sure
182   AM_RANGE(0x000000, 0x1fffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
183   AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE16_LEGACY(amiga_cia_r, amiga_cia_w, 0xffffffff)
184   AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16_LEGACY(amiga_custom_r, amiga_custom_w, 0xffffffff) AM_SHARE("custom_regs")
185   AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE16_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w, 0xffffffff)
186   AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0)   /* Kickstart */
187ADDRESS_MAP_END
179188
180189static ADDRESS_MAP_START(keyboard_mem, AS_PROGRAM, 8, amiga_state )
181190   AM_RANGE(0x0000, 0x003f) AM_RAM /* internal user ram */
r18735r18736
853862   MCFG_SOFTWARE_LIST_ADD("flop_common","amiga_flop")
854863   MCFG_SOFTWARE_LIST_ADD("flop_list","amiga1200_flop")
855864   MCFG_SOFTWARE_LIST_ADD("flop_aga","amigaaga_flop")
865   
856866
857
858867MACHINE_CONFIG_END
859868
860869
r18735r18736
870879
871880   /* sound hardware */
872881   MCFG_SOUND_MODIFY("amiga")
873   MCFG_SOUND_CLOCK(AMIGA_68EC020_PAL_CLOCK/8) /* 3.546895 MHz */
882   MCFG_SOUND_CLOCK(AMIGA_68EC020_PAL_CLOCK/4) /* 3.546895 MHz */
874883
875884   /* cia */
876885   MCFG_DEVICE_MODIFY("cia_0")
r18735r18736
884893MACHINE_CONFIG_END
885894
886895
896// 16mhz and 25mhz versions were available
897// 68030 / 68040 options available
898#define A3000_XTAL   XTAL_25MHz
899
900/* ToDo: proper A3000 clocks */
901
902static MACHINE_CONFIG_START( a3000n, amiga_state )
903   /* basic machine hardware */
904   MCFG_CPU_ADD("maincpu", M68030, A3000_XTAL)
905   MCFG_CPU_PROGRAM_MAP(amiga_mem32)
906
907   MCFG_CPU_ADD("keyboard", M6502, XTAL_1MHz) /* 1 MHz? */
908   MCFG_CPU_PROGRAM_MAP(keyboard_mem)
909   MCFG_DEVICE_DISABLE()
910
911   MCFG_SCREEN_ADD("screen", RASTER)
912   MCFG_SCREEN_REFRESH_RATE(59.997)
913   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
914
915   MCFG_MACHINE_RESET_OVERRIDE(amiga_state, amiga )
916
917    /* video hardware */
918   MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
919   MCFG_SCREEN_SIZE(228*4, 262)
920   MCFG_SCREEN_VISIBLE_AREA(214, (228*4)-1, 34, 262-1)
921   MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga)
922
923   MCFG_PALETTE_LENGTH(4096)
924   MCFG_PALETTE_INIT_OVERRIDE(amiga_state, amiga )
925
926   MCFG_VIDEO_START_OVERRIDE(amiga_state,amiga)
927
928   /* devices */
929   MCFG_MSM6242_ADD("rtc",amiga_rtc_intf)
930   MCFG_CENTRONICS_PRINTER_ADD("centronics", amiga_centronics_config)
931
932   /* sound hardware */
933   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
934
935   MCFG_SOUND_ADD("amiga", AMIGA, 3579545)
936   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
937   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
938   MCFG_SOUND_ROUTE(2, "rspeaker", 0.50)
939   MCFG_SOUND_ROUTE(3, "lspeaker", 0.50)
940
941   /* cia */
942   MCFG_LEGACY_MOS8520_ADD("cia_0", AMIGA_68000_NTSC_CLOCK / 10, 60, cia_0_ntsc_intf)
943   MCFG_LEGACY_MOS8520_ADD("cia_1", AMIGA_68000_NTSC_CLOCK, 0, cia_1_intf)
944
945   /* fdc */
946   MCFG_AMIGA_FDC_ADD("fdc", AMIGA_68000_NTSC_CLOCK)
947   MCFG_FLOPPY_DRIVE_ADD("fdc:0", amiga_floppies, "35dd", 0, amiga_fdc::floppy_formats)
948   MCFG_FLOPPY_DRIVE_ADD("fdc:1", amiga_floppies, 0,      0, amiga_fdc::floppy_formats)
949   MCFG_FLOPPY_DRIVE_ADD("fdc:2", amiga_floppies, 0,      0, amiga_fdc::floppy_formats)
950   MCFG_FLOPPY_DRIVE_ADD("fdc:3", amiga_floppies, 0,      0, amiga_fdc::floppy_formats)
951
952   MCFG_AMIGA_KEYBOARD_ADD("kbd")
953MACHINE_CONFIG_END
954
955static MACHINE_CONFIG_DERIVED( a3000, a3000n )
956
957   MCFG_SCREEN_MODIFY("screen")
958   MCFG_SCREEN_REFRESH_RATE(50)
959   MCFG_SCREEN_SIZE(228*4, 312)
960   MCFG_SCREEN_VISIBLE_AREA(214, (228*4)-1, 34, 312-1)
961
962   /* cia */
963   MCFG_DEVICE_REMOVE("cia_0")
964   MCFG_LEGACY_MOS8520_ADD("cia_0", AMIGA_68000_PAL_CLOCK / 10, 50, cia_0_pal_intf)
965
966   /* fdc */
967   MCFG_DEVICE_MODIFY("fdc")
968   MCFG_DEVICE_CLOCK(AMIGA_68000_PAL_CLOCK)
969MACHINE_CONFIG_END
970
887971/***************************************************************************
888972
889973  Amiga specific stuff
r18735r18736
10341118      NULL,            /* scanline0_callback */
10351119      NULL,            /* reset_callback */
10361120      NULL,            /* nmi_callback */
1037      FLAGS_AGA_CHIPSET   /* flags */
1121      FLAGS_AGA_CHIPSET | FLAGS_IS_32BIT   /* flags */
10381122   };
10391123
10401124   /* configure our Amiga setup */
r18735r18736
10451129   membank("bank1")->configure_entry(1, machine().root_device().memregion("user1")->base());
10461130}
10471131
1132DRIVER_INIT_MEMBER(amiga_state,a3000)
1133{
1134   static const amiga_machine_interface a3000_intf =
1135   {
1136      ECS_CHIP_RAM_MASK,
1137      amiga_read_joy0dat,   amiga_read_joy1dat,  /* joy0dat_r & joy1dat_r */
1138      NULL,            /* potgo_w */
1139      NULL,            /* serdat_w */
1140      NULL,            /* scanline0_callback */
1141      NULL,            /* reset_callback */
1142      NULL,            /* nmi_callback */
1143      FLAGS_IS_32BIT,   /* flags */
1144   };
10481145
1146   /* configure our Amiga setup */
1147   amiga_machine_config(machine(), &a3000_intf);
1148
1149   /* set up memory */
1150   membank("bank1")->configure_entry(0, m_chip_ram);
1151   membank("bank1")->configure_entry(1, machine().root_device().memregion("user1")->base());
1152}
1153
1154
1155
10491156/***************************************************************************
10501157    ROM DEFINITIONS
10511158***************************************************************************/
r18735r18736
11581265
11591266#define rom_ami1200n    rom_ami1200
11601267
1268/* Note: I think those ROMs are correct, but they should be verified */
1269ROM_START( ami3000 )
1270   ROM_REGION32_BE(0x80000, "user1", 0)
1271   ROM_DEFAULT_BIOS("kick14")
1272   ROM_SYSTEM_BIOS(0, "kick14", "Kickstart 1.4 (36.16)")
1273   /* COPYRIGHT 1990 CAI // ALL RIGHTS RESERVED // ALPHA 5 ROM 0 CS=9713 */
1274   ROMX_LOAD("390629-02.u182", 0x00000, 0x40000, CRC(58327536) SHA1(d1713d7f31474a5948e6d488e33686061cf3d1e2), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1))
1275   /* COPYRIGHT 1990 CAI // ALL RIGHTS RESERVED // ALPHA 5 ROM 1 CS=9B21 */
1276   ROMX_LOAD("390630-02.u183", 0x00002, 0x40000, CRC(fe2f7fb9) SHA1(c05c9c52d014c66f9019152b3f2a2adc2c678794), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1))
1277   ROM_SYSTEM_BIOS(1, "kick204", "Kickstart 2.04 (37.175)")
1278   ROMX_LOAD("390629-03.u182", 0x00000, 0x40000, CRC(a245dbdf) SHA1(83bab8e95d378b55b0c6ae6561385a96f638598f), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2))
1279   ROMX_LOAD("390630-03.u183", 0x00002, 0x40000, CRC(7db1332b) SHA1(48f14b31279da6757848df6feb5318818f8f576c), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2))
1280   ROM_SYSTEM_BIOS(2, "kick31", "Kickstart 3.1 (40.68)")
1281   ROMX_LOAD("kick31.u182",    0x00000, 0x40000, CRC(286b9a0d) SHA1(6763a2258ec493f7408cf663110dae9a17803ad1), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(3))
1282   ROMX_LOAD("kick31.u183",    0x00002, 0x40000, CRC(0b8cde6a) SHA1(5f02e97b48ebbba87d516a56b0400c6fc3434d8d), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(3))
11611283
1284   ROM_REGION(0x1040, "keyboard", 0)
1285   ROM_LOAD("keyboard", 0x0000, 0x1040, NO_DUMP)
1286ROM_END
11621287
1288#define rom_ami3000n    rom_ami3000
1289
11631290ROM_START( cdtv )
11641291   ROM_REGION16_BE(0x100000, "user1", 0)
11651292   ROM_LOAD16_BYTE("391008-01.u34", 0x000000, 0x020000, CRC(791cb14b) SHA1(277a1778924496353ffe56be68063d2a334360e4))
r18735r18736
11891316COMP( 1985, ami1000n,  ami1000,  0,      ami1000n, amiga, amiga_state,  amiga,  "Commodore Business Machines",  "Amiga 1000 (NTSC)",     GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
11901317
11911318
1192/* Amiga 2000 - similar to 1000 */
1193/* Amiga 1500 - Amiga 2000 with two floppy drives (2nd replacing the HDD) */
1194/* Amiga 2500 - Amiga 2000 with 68020 accelerator card */
11951319
1196/* Amiga 3000 - ECS chipset, 68030 CPU - skeleton driver a3000.c */
1197
1198/* Amiga 4000 - AGA chipset, 68040 / 68060 CPU */
1199
12001320/* Low-end market line */
12011321
12021322COMP( 1987, ami500,    0,        0,      ami500,      amiga, amiga_state,  amiga,  "Commodore Business Machines",  "Amiga 500 (PAL, OCS)",  GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
r18735r18736
12111331COMP( 1992, ami1200,   0,        0,      a1200,  amiga, ami1200_state,  a1200,  "Commodore Business Machines",  "Amiga 1200 (PAL, AGA)" , GAME_NOT_WORKING  )
12121332COMP( 1992, ami1200n,  ami1200,  0,      a1200n, amiga, ami1200_state,  a1200,  "Commodore Business Machines",  "Amiga 1200 (NTSC, AGA)" , GAME_NOT_WORKING )
12131333
1334COMP( 1992, ami3000,   0,        0,      a3000,  amiga, amiga_state,  a3000,  "Commodore Business Machines",  "Amiga 3000 (PAL, ECS, 68030)" , GAME_NOT_WORKING  )
1335COMP( 1992, ami3000n,  ami3000,  0,      a3000n, amiga, amiga_state,  a3000,  "Commodore Business Machines",  "Amiga 3000 (NTSC, ECS, 68030)" , GAME_NOT_WORKING )
12141336
1337
1338
12151339COMP( 1991, cdtv,   0,      0,      cdtv,   cdtv, amiga_state,   cdtv,   "Commodore Business Machines",  "CDTV (NTSC)",           GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
12161340
1341/* other official models */
1342/* Amiga 2000 - similar to 1000 */
1343/* Amiga 1500 - Amiga 2000 with two floppy drives (2nd replacing the HDD) */
1344/* Amiga 2500 - Amiga 2000 with 68020 accelerator card */
1345/* Amiga 4000 - AGA chipset, 68040 / 68060 CPU */
1346
1347
12171348/* CD32 - see cd32.c */
12181349
12191350
trunk/src/mess/mess.mak
r18735r18736
612612   $(MESS_MACHINE)/amigacd.o   \
613613   $(MESS_MACHINE)/amigakbd.o   \
614614   $(MESS_DRIVERS)/amiga.o      \
615   $(MESS_DRIVERS)/a3000.o      \
616615
617616$(MESSOBJ)/amstrad.a:         \
618617   $(MESS_DRIVERS)/amstrad.o   \

Previous 199869 Revisions Next


© 1997-2024 The MAME Team