external

package
v0.8.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 7, 2026 License: GPL-3.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var UnrecognisedData = errors.New("unrecognised data")

error returned when data is not recognised at all

Functions

This section is empty.

Types

type Absolute added in v0.6.3

type Absolute struct {
	// contains filtered or unexported fields
}

Absolute implements the mapper used by the game F18 Hornet https://github.com/JetSetIlly/test7800/issues/30

func NewAbsolute added in v0.6.3

func NewAbsolute(_ Context, d []byte) (*Absolute, error)

func (*Absolute) Access added in v0.6.3

func (ext *Absolute) Access(write bool, address uint16, data uint8) (uint8, error)

func (*Absolute) Label added in v0.6.3

func (ext *Absolute) Label() string

type Activision added in v0.6.3

type Activision struct {
	// contains filtered or unexported fields
}

Activision implements the activision type mapper

https://forums.atariage.com/topic/384647-what-means-the-rom-file-am-and-om-in-trebors-rom-pack/#comment-5719218

note that the information on that page isn't quite right but it gives a basic idea of the format. the Access() function for this mapper describes correctly the layout of the AM variant. The OM variant can be transformed into the AM variant by swapping each 8k block for each bank

func NewActivision added in v0.6.3

func NewActivision(_ Context, d []byte, originalOrder bool) (*Activision, error)

func (*Activision) Access added in v0.6.3

func (ext *Activision) Access(write bool, address uint16, data uint8) (uint8, error)

func (*Activision) Label added in v0.6.3

func (ext *Activision) Label() string

type Banksets added in v0.5.1

type Banksets struct {
	// contains filtered or unexported fields
}

https://7800.8bitdev.org/index.php/Bankset_Bankswitching

func NewBanksets added in v0.5.1

func NewBanksets(_ Context, supergame bool, d []byte, ram bool) (*Banksets, error)

func (*Banksets) Access added in v0.5.1

func (ext *Banksets) Access(write bool, address uint16, data uint8) (uint8, error)

func (*Banksets) HLT added in v0.5.1

func (ext *Banksets) HLT(hlt bool)

func (*Banksets) Label added in v0.5.1

func (ext *Banksets) Label() string

type Bus added in v0.6.0

type Bus interface {
	Label() string
	Access(write bool, address uint16, data uint8) (uint8, error)
}

type CartridgeInsertor

type CartridgeInsertor struct {

	// the type of controller to use for this cartridge
	Controller string

	// use high-score cartridge shim with cartridge
	UseHSC     bool
	UseSavekey bool
	// contains filtered or unexported fields
}

func Fingerprint

func Fingerprint(filename string, mapper string) (CartridgeInsertor, error)

func FingerprintBlob added in v0.7.1

func FingerprintBlob(filename string, d []uint8, mapper string) (CartridgeInsertor, error)

func (CartridgeInsertor) Data added in v0.4.2

func (c CartridgeInsertor) Data() []uint8

func (CartridgeInsertor) Filename added in v0.4.2

func (c CartridgeInsertor) Filename() string

func (CartridgeInsertor) ResetProcedure

func (c CartridgeInsertor) ResetProcedure() CartridgeReset

func (CartridgeInsertor) Spec added in v0.7.0

func (c CartridgeInsertor) Spec() string

type CartridgeReset

type CartridgeReset struct {
	// if BypassBIOS is true then the normal BIOS initialisation procedure is bypassed
	BypassBIOS bool
}

CartridgeReset contains 'instructions' to be followed when the cartridge is inserted

type Context

type Context interface {
	elf.Context
	Rand8Bit() uint8
}

type Device

type Device struct {
	// contains filtered or unexported fields
}

func Create

func Create(ctx Context) *Device

func (*Device) Access

func (dev *Device) Access(write bool, address uint16, data uint8) (uint8, error)

func (*Device) BusChange

func (dev *Device) BusChange(address uint16, data uint8) error

func (*Device) Chips added in v0.6.0

func (dev *Device) Chips(yield func(OptionalBus))

Chips iterates through the additional (none ROM/RAM) chips in the external device

func (*Device) Eject

func (dev *Device) Eject()

func (*Device) GetCoProcBus added in v0.7.3

func (dev *Device) GetCoProcBus() coprocessor.CartCoProcBus

func (*Device) HLT added in v0.5.1

func (dev *Device) HLT(halt bool)

HLT should be called whenever the HLT line is changed

func (*Device) Insert

func (dev *Device) Insert(c CartridgeInsertor) error

func (*Device) IsEjected

func (dev *Device) IsEjected() bool

func (*Device) Label

func (dev *Device) Label() string

type Flat

type Flat struct {
	// contains filtered or unexported fields
}

func NewFlat

func NewFlat(_ Context, d []byte) (*Flat, error)

func (*Flat) Access

func (ext *Flat) Access(_ bool, address uint16, data uint8) (uint8, error)

func (*Flat) Label

func (ext *Flat) Label() string

type MRAM added in v0.7.5

type MRAM struct {
	// contains filtered or unexported fields
}

MRAM is created when bit 0x0080 of the a78 cartridge type field is on. Example ROM is the prototype of Rescue on Fractalus. The name mRAM comes from the A7800 rom.cpp file which describes this type of cartridge as "no bankswitch + mRAM chip"

func NewMRAM added in v0.7.5

func NewMRAM(_ Context, d []byte) (*MRAM, error)

func (*MRAM) Access added in v0.7.5

func (ext *MRAM) Access(write bool, address uint16, data uint8) (uint8, error)

func (*MRAM) Label added in v0.7.5

func (ext *MRAM) Label() string

type OptionalBus added in v0.6.0

type OptionalBus interface {
	Label() string
	Access(write bool, address uint16, data uint8) (uint8, bool, error)
}

the OptionalBus interface differs to the Bus interface because the Access() function returns an additional boolean result to indicate whether the address was recognised and handled. The intention is for the External device to call Access() on the OptionalBus first and to only call Access() on the main Bus device if the first Access() returned false

type SN added in v0.6.0

type SN struct {
	// contains filtered or unexported fields
}

SN is used for both SN and Eagle

func NewSN added in v0.6.0

func NewSN(_ Context, d []byte, version string) (*SN, error)

func (*SN) Access added in v0.6.0

func (ext *SN) Access(write bool, address uint16, data uint8) (uint8, error)

func (*SN) Label added in v0.6.0

func (ext *SN) Label() string

type Supergame

type Supergame struct {
	// contains filtered or unexported fields
}

https://7800.8bitdev.org/index.php/ATARI_7800_BANKSWITCHING_GUIDE

"There are several different types of Atari's SuperGame bankswitching. It basically consists of 8 16KB banks (0-7) that can be mapped in at $8000-$bfff. Bank 7 always is fixed at $c000-$ffff. To map in a chosen bank into $8000-$bfff you write it's bank number (0-7) to any address between $8000-bfff."

func NewSupergame

func NewSupergame(_ Context, d []byte, banked bool, exram bool, exrom bool) (*Supergame, error)

func (*Supergame) Access

func (ext *Supergame) Access(write bool, address uint16, data uint8) (uint8, error)

func (*Supergame) Label

func (ext *Supergame) Label() string

Directories

Path Synopsis
Package ace implements the ELF cartridge mapper.
Package ace implements the ELF cartridge mapper.
Package hsc implements the high-score cartridge shim for the 7800.
Package hsc implements the high-score cartridge shim for the 7800.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL