|
Joined: Feb 2014
Posts: 1,124 Likes: 193
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,124 Likes: 193 |
I was looking at the "remapping" table and it looks like the first 5 colors and the last 3 colors line up pretty well with the double hi-res graphics colors. The gazelle software only seems to care about the 8 colors used for Videotex Viewdata. Maybe it doesn't use the other colors? 2 bits for blue, 3 for green, 3 for red BGR 00 = 000 black 07 = 001 red c0 = 100 blue C7 = 101 b+r= magenta 38 = 010 green 00 = 000 FF = 111 C7 = 101 00 = 000 00 = 000 00 = 000 FF = 111 00 = 000 3F = 011 g+r = yellow F8 = 110 b+g = cyan FF = 111 white I happened along a really cool spreadsheet regarding apple ii double-hi res and the 16 colors: Apple II Video Display Theory https://www.kreativekorp.com/software/fonts/apple2.shtmlhttps://docs.google.com/spreadsheets/d/1rKR6A_bVniSCtIP_rrv8QLWJdj4h6jEU1jJj0AebWwg/edit?usp=sharing
|
|
|
|
Joined: Feb 2014
Posts: 1,124 Likes: 193
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,124 Likes: 193 |
Here's a rare piece of hardware: The HAL Labs gizmo, which is only supported by 2 games that I could find: Super Taxman and Vindicator, both by HAL Labs. There's a picture on Atari Age forums: https://atariage.com/forums/gallery/image/12734-gizmo/There's a few more posts from Greg Autry on Atari Age: https://atariage.com/forums/topic/216495-taxman/https://atariage.com/forums/profile/41442-gautry/content/gautry
Sorry I'm late to the thread. If anyone is still paying attention, I was the founder of HAL Labs. Brian Fitzgerald and I developed Taxman while in high school and as undergrads living in a trailer on campus at UC Irvine 1980-1981.
I take exception with any criticisms here. It was a nearly perfect copy of Pacman, far better than the other Apple clones and Atari produced versions for other platforms. Brian's bit mapping algorithms were way faster and far smoother (see Broderbund's Snoggle for instance) and the AI on our ghosts was damn good. We even replicated minor things like being able to pass through a ghost on rare occasions (1/255 collisions). Some people hate the keyboard controls, but the Apple's potentiometer based joystick, while great for flight simulators, was terrible for maze games which should be restricted to a four switch movement. ... We were so frustrated by the Apple Joystick that we developed an adapter with encoding hardware to allow an Atari style 9pin arcade (4 switch) joystick to plug into the Apple II 16 pin DIP connector. Playing Taxman with a WICO joystick was actually really nice.
... Unfortunately no. There was only one chip (7400 series) let me see if I can remember what it was or how to wire it. Essentially we sent signal out the enunciator port to the chip telling it which of the 4 inputs to accept as a button press at that moment. It was 30 years ago . . . Unfortunately the device I have is sealed with epoxy.
It could only work with software written for it and there wasn't much. Supertaxman and a really great game we did called Vindicator, which was a bit like Robotron. Really incredibly fast for the 1mhz 8 bit CPU. Our distribution died at that time as BIG organizations piled into the market with massive marketing budgets and very few people got to see it. A couple of other small game companies supported the device, but I don't recall which games. From the code, it sets or clears the 3 annunciators an0,an1, and an2 to select one of the 5 atari joystick lines and reads the address c061 (button0) to get the bit. These seem to be active highs. Just an 8 to 1 mux. 74151 perhaps? I copied joystick.h to gizmo.h and added a little bit: Adding m_an2 // input ports
required_ioport m_player1, m_player2;
int m_an0, m_an1, m_an2;
int gizmotable[8] = {1,3,2,0,4,5,5,5}; // right, left, down, up, fire, none, none, none
Copying joystick.cpp to gizmo.cpp and adding the gizmotable as a save item so I could change the values from the debug view in real time because I was having some trouble getting it just right.
void apple2_gizmo_device::device_start()
{
save_item(NAME(m_an0));
save_item(NAME(m_an1));
save_item(NAME(m_an2));
save_item(NAME(gizmotable));
}
READ_LINE_MEMBER(apple2_gizmo_device::sw0_r)
{
/* PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) 0 = up
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) 1 = right
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) 2 = down
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) 3 = left
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) 4 = fire
*/
return BIT(m_player1->read(),gizmotable[m_an0+m_an1*2+m_an2*4]) ^ 0x1; // active high so we'll invert it
} If you set the 4 to 6 in the gizmotable you get autofire in Vindicator, it's much easier. Hit enter once to get the Gizmo. There's a built in sprite editor, just hit esc on the control selection screen. Vindicator is a Robotron clone that if it were a bit less manic it'd be a really good game. Your character moves too fast and can be hard to control. I'm going to try and patch it sometime to make it more playable. In Super Taxman 2, just hit the space bar to start, it is set up already to use the Gizmo. The original taxman didn't have any support that I could find.
|
|
|
|
Joined: Feb 2014
Posts: 1,124 Likes: 193
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,124 Likes: 193 |
I wanted to test out some two player games that used regular joysticks like Archon and One on One but there's an interesting problem, on these two games, they've put the firebutton for player to on input switch #1. According to the documentation: and scrg paddle adapple manual you just move a jumper wire. What makes sense to me for the paddle adapple is: S1C is switch 1 computer ---> S0B switch 0 socket B (player 2 on socket B) S0C is switch 0 computer ----> S0A switch 0 socket A (player 1 on socket A) It'd be neat to have the remappability functionality of the paddle adapple. Pretty simple modification, just change sw1_r to look for BIT number 6 (player 2 button 0) u8 apple2_joystick_device::pdl0_r()
{
return m_joy_x[0]->read();
}
u8 apple2_joystick_device::pdl1_r()
{
return m_joy_y[0]->read();
}
u8 apple2_joystick_device::pdl2_r()
{
return m_joy_x[1]->read();
}
u8 apple2_joystick_device::pdl3_r()
{
return m_joy_y[1]->read();
}
READ_LINE_MEMBER(apple2_joystick_device::sw0_r)
{
return BIT(m_buttons->read(), 4);
}
READ_LINE_MEMBER(apple2_joystick_device::sw1_r)
{
// return BIT(m_buttons->read(), 5); single player
return BIT(m_buttons->read(), 6); // two player, archon and 1 on 1 want joystick 2 button here
}
Last edited by Golden Child; 09/11/19 08:23 PM.
|
|
|
|
Joined: Feb 2014
Posts: 1,124 Likes: 193
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,124 Likes: 193 |
So I thought I'd see if HorizonV by Nasir would do the joyport thing, and it does but it's a little bit strange. It will only ask you once what controller you are going to use, and if you don't type CTRL+SHIFT+P right at that moment you won't be able to switch to the joyport. But it isn't consistent about how it uses the ports. Note that it doesn't list the joyport as an option. I think that it was written with using the switch in the Left Position where it completely ignores what the m_an0 is doing. Because it wants to turn an0 on and off which chooses the other joystick. So the fire button ends up on the other joystick from where the left/right and up/down is. So why don't we try to reproduce that functionality with a little configuration option:
PORT_START("joyport_config")
PORT_CONFNAME(0x03, 0x01, "Joyport Switch Setting")
PORT_CONFSETTING(0x00, "Left (Joystick 1)")
PORT_CONFSETTING(0x01, "Middle (2 Player - Both)")
PORT_CONFSETTING(0x02, "Right (Joystick 2)")
PORT_CONFNAME(0x0C, 0x04, "Atari Joystick / Paddle Switch")
PORT_CONFSETTING(0x04, "Joystick")
PORT_CONFSETTING(0x08, "4 Player Paddle")
add it to our device:
apple2_joyport_device::apple2_joyport_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: device_t(mconfig, APPLE2_JOYPORT, tag, owner, clock)
, device_a2gameio_interface(mconfig, *this)
, m_player1(*this, "joystick_p1")
, m_player2(*this, "joystick_p2")
, m_joyport_config(*this, "joyport_config")
{
} and add the required_ioport to our .h file: // input ports
required_ioport m_player1, m_player2;
required_ioport m_joyport_config;
READ_LINE_MEMBER(apple2_joyport_device::sw0_r)
{
u8 port_read;
if ((m_joyport_config->read() & 0x03) == 0x00) port_read = m_player1->read();
else if ((m_joyport_config->read() & 0x03) == 0x01) port_read = m_an0 ? m_player2->read() : m_player1->read();
else if ((m_joyport_config->read() & 0x03) == 0x02) port_read = m_player2->read();
return BIT(port_read, 4);
}
the other switches are pretty similar to this one:
and now you can just switch the port into left / middle (both) / right And I reckon I could implement the Paddle Adapple functionality with a similar configuration option, one for each of the inputs, have a corresponding output and just select the one you want.
|
|
|
|
Joined: Feb 2014
Posts: 1,124 Likes: 193
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,124 Likes: 193 |
Taking some liberties with the apple2 remap table, so I can get underscore with CTRL+SHIFT+O, I can use the step by step disk. Sure I can catalog it, and use esc ijkm, space and arrow keys to load the characters into the input buffer, but where's the fun in that? Just modify our remap table: { 0x4f,0x4f,0x0f,0x5f }, /* o O 12 */ // 5f will make underscore I remember this introduction to Basic programming from back in the day. Step-by-Step BASIC (all in one).dsk It'd be nice to have the workbook, but it's pretty easy to figure out what they're going for. There was a second one in the series: "Step by Step Two" by Program Design Inc.
|
|
|
|
Joined: Jan 2012
Posts: 1,180 Likes: 17
Very Senior Member
|
OP
Very Senior Member
Joined: Jan 2012
Posts: 1,180 Likes: 17 |
NCR DMV- DEC Rainbow- Siemens PCD- ITT 3030-Oly People- Acorn A5000- Olivetti M20
|
|
|
|
Joined: Feb 2014
Posts: 1,124 Likes: 193
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,124 Likes: 193 |
Hi rfka01, You've got me curious 8-). The Super Sketch is pretty neat. According to this forum post there's an apple 2 version, but I haven't been able to find a disk image. It doesn't look like it'd be that hard to figure out. https://atariage.com/forums/topic/275735-what-system-is-this-super-sketch-used/The forum post said that there were a bunch of different versions: TI - Cart / Coleco - Cart / Atari - long 9-pin / C64 - long 9-pin / Apple II - 9-pin C64 Model G2100 Apple Model g2200? Atari Model G2300 TI Model G2400 Coleco Model G2500
|
|
|
|
Joined: Jan 2012
Posts: 1,180 Likes: 17
Very Senior Member
|
OP
Very Senior Member
Joined: Jan 2012
Posts: 1,180 Likes: 17 |
Let's see if comp.sys.apple2 knows something ... just posted there
NCR DMV- DEC Rainbow- Siemens PCD- ITT 3030-Oly People- Acorn A5000- Olivetti M20
|
|
|
|
Joined: Jan 2012
Posts: 1,180 Likes: 17
Very Senior Member
|
OP
Very Senior Member
Joined: Jan 2012
Posts: 1,180 Likes: 17 |
I completely misunderstood that thing from the first photos! I thought the "tip" would be moved by motors and be some sort of plotter ... but it's a line tracing device Ooops
NCR DMV- DEC Rainbow- Siemens PCD- ITT 3030-Oly People- Acorn A5000- Olivetti M20
|
|
|
|
Joined: Mar 2001
Posts: 17,234 Likes: 260
Very Senior Member
|
Very Senior Member
Joined: Mar 2001
Posts: 17,234 Likes: 260 |
I thought it was a plotter also, and I couldn't figure out how they were getting such smooth curves from an 8-bit micro driving what looked like a toy.
|
|
|
3 members (yugffuts, 2 invisible),
177
guests, and
0
robots. |
Key:
Admin,
Global Mod,
Mod
|
|
Forums9
Topics9,328
Posts122,128
Members5,074
|
Most Online1,283 Dec 21st, 2022
|
|
These forums are sponsored by Superior Solitaire, an ad-free card game collection for macOS and iOS. Download it today!
|
|
|
|