// This file is part of Gopher2600.
//
// Gopher2600 is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Gopher2600 is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Gopher2600.  If not, see <https://www.gnu.org/licenses/>.

package moviecart

import (
	_ "embed"
)

// coreData is the binary file generated by the moviecart project
// https://github.com/lodefmode/moviecart/tree/main/asm

//go:embed "core.bin"
var coreData []byte

// key addresses in the core program. data at these address or just after in
// the case of JMP instructions, will be altered during playback.
//
// these *must* relate to the core.bin embedded above
//
// !!TODO: embed core.bin address constants, generated during the assembly process of core.bin.
const (
	// processAddress().
	addrTitleLoop = 0xb50

	// fillAddrRightLine().
	addrSetAudRight = 0x94e
	addrSetGData5   = 0x95a
	addrSetGData6   = 0x948
	addrSetGData7   = 0x96e
	addrSetGData8   = 0x962
	addrSetGData9   = 0x950
	addrSetGCol5    = 0x95e
	addrSetGCol6    = 0x956
	addrSetGCol7    = 0x96a
	addrSetGCol8    = 0x972
	addrSetGCol9    = 0x954
	addrSetBkColR   = 0x966

	// fillAddrLeftLine().
	addrSetAudLeft   = 0x98c
	addrSetGData0    = 0x994
	addrSetGData1    = 0x982
	addrSetGData2    = 0x9a8
	addrSetGData3    = 0x99c
	addrSetGData4    = 0x990
	addrSetGCol0     = 0x998
	addrSetGCol1     = 0x988
	addrSetGCol2     = 0x9a4
	addrSetGCol3     = 0x9ac
	addrSetGCol4     = 0x992
	addrPickContinue = 0x9be
	addrRightLine    = 0x948
	addrEndLines     = 0xa80
	addrSetPfColL    = 0x9a0

	// fillAddrEndLines().
	addrSetAudEndlines     = 0xa80
	addrSetOverscanSize    = 0xa9a
	addrSetVBlankSize      = 0xab0
	addrPickExtraLines     = 0xab9
	addrPickTransport      = 0xac6
	addrTransportDirection = 0x880
	addrTransportButtons   = 0x894

	addrSetVSyncSize = 0xaa3
	addrTitleGap1    = 0xb2c
	addrTitleGap2    = 0xb40

	// fillAddrBlankLines().
	addrAudioBank = 0xb80
)
