cartridge

package
v0.0.0-...-8886972 Latest Latest
Warning

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

Go to latest
Published: Mar 7, 2022 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TYPE_NO_MBC = iota
	TYPE_MBC1
	TYPE_MBC2
	TYPE_MBC3
	TYPE_MBC4
	TYPE_MBC5
	TYPE_MBC6
	TYPE_MBC7
)

ROM Type @see https://gbdev.io/pandocs/The_Cartridge_Header.html#0147---cartridge-type

View Source
const (
	ROM_32KB int = (1 << (iota + 5)) * 1024
	ROM_64KB
	ROM_128KB
	ROM_256KB
	ROM_512KB
	ROM_1024KB
	ROM_2048KB
	ROM_4096KB
	ROM_8192KB
)

ROM Size @see https://gbdev.io/pandocs/The_Cartridge_Header.html#0148---rom-size

View Source
const (
	NO_RAM    int = 0 // also UNUSED
	RAM_2KB   int = 2 * 1024
	RAM_8KB   int = 8 * 1024
	RAM_32KB  int = 32 * 1024
	RAM_128KB int = 128 * 1024
	RAM_64KB  int = 64 * 1024
)

RAM Size @see https://gbdev.io/pandocs/The_Cartridge_Header.html#0149---ram-size

View Source
const (
	SimpleROMBankingMode                 = 0x00
	RAMBankingModeAdvancedROMBankingMode = 0x01
)

Mode

Variables

This section is empty.

Functions

This section is empty.

Types

type Cartridge

type Cartridge struct {
	// Game Title
	Title string
	// GameBoy Color Flag
	CGBFlag bool
	// game supports SGB functions
	SGBFlag bool
	Type    byte
	MBC     MBC
	Mode    byte
}

@see https://gbdev.io/pandocs/The_Cartridge_Header.html

func New

func New(romData []byte) *Cartridge

func (*Cartridge) ReadByte

func (c *Cartridge) ReadByte(addr types.Addr) byte

TODO Read RAM

func (*Cartridge) WriteByte

func (c *Cartridge) WriteByte(addr types.Addr, value byte)

type CartridgeType

type CartridgeType byte

type MBC

type MBC interface {
	Read(addr types.Addr) byte
	Write(addr types.Addr, value byte)
	SwitchROMBank(bank uint16)
	SwitchRAMBank(bank uint8)
}

Memory Bank Controller Which provides BANK switch to expand address spaces

type MBC0

type MBC0 struct {
	ROM *memory.ROM
}

func NewMBC0

func NewMBC0(romData []byte) *MBC0

func (*MBC0) Read

func (m *MBC0) Read(addr types.Addr) byte

func (*MBC0) SwitchRAMBank

func (m *MBC0) SwitchRAMBank(bank uint8)

nop

func (*MBC0) SwitchROMBank

func (m *MBC0) SwitchROMBank(bank uint16)

nop

func (*MBC0) Write

func (m *MBC0) Write(addr types.Addr, value byte)

nop

type MBC1

type MBC1 struct {
	ROM *memory.ROM
	RAM *memory.RAM
	// contains filtered or unexported fields
}

func NewMBC1

func NewMBC1(romData []byte, ramSize int) *MBC1

func (*MBC1) Read

func (m *MBC1) Read(addr types.Addr) byte

func (*MBC1) SwitchHiROMBank

func (m *MBC1) SwitchHiROMBank(value byte)

func (*MBC1) SwitchRAMBank

func (m *MBC1) SwitchRAMBank(bank uint8)

func (*MBC1) SwitchROMBank

func (m *MBC1) SwitchROMBank(bank uint16)

func (*MBC1) Write

func (m *MBC1) Write(addr types.Addr, value byte)

Jump to

Keyboard shortcuts

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