/*
 * ROM spec file
 */

/*
 * Include morphdemo.h to get definition for 'STACKSIZE' and
 * for RSP segment numbers 'STATIC_SEG' and 'DYNAMIC_SEG'
 */

#include "morphdemo.h"

/*
 * morphdemo.c relies on boot entry point being named "boot", and the boot
 * stack named "bootStack" with size STACKSIZE
 */

beginseg
	name "code"
	flags BOOT OBJECT
	entry boot
	address 0x80200000
	stack bootStack + STACKSIZE
	include "codesegment.o"
	include "$(ROOT)/usr/lib/PR/rspboot.o"
	include "$(ROOT)/usr/lib/PR/gspF3DEX2.xbus.o"
endseg

/*
 * Color Frame buffers
 *
 * Two 16-bit 320x240 CFB's take 0x4b000 bytes.  Put them at very end of
 * first 1 MB.
 */

beginseg
	name "cfb"
	flags OBJECT
	address 0x800b5000
	include "cfb.o"
endseg

/*
 * Z-Buffer
 *
 * Address is at 1Mbyte, thus putting it in the 2nd bank of DRAM.
 * Performance is better if the CFB and ZBUF are in different
 * 1MB banks of DRAM.
 */

beginseg
	name "zbuf"
	flags OBJECT
	address 0x80100000
	include "zbuf.o"
endseg

/*
 * 'STATIC' segment
 *
 * This segment contains static display lists
 * The addresses generated are RSP addresses.
 * The data itself will have to be DMA'd to an (arbitrary) RDRAM location.
 *
 */
beginseg
	name "rsp_static"
	flags OBJECT
	number STATIC_SEG
	include "static.o"
endseg

/*
 * 'DYNAMIC' segment
 *
 * This segment is used to generated RSP addresses for the dynamic data.
 * No ROM cartridge bits are generated by this segment.  The actual RDRAM
 * space will be reserved by declarations in the code segment which
 * generate equivalent R4300 addresses.
 */
beginseg
	name "rsp_dynamic"
	flags OBJECT
	number DYNAMIC_SEG
	include "dynamic.o"
endseg

/*
 * Combine all of the segments into a single wave
 */

beginwave
	name "morphdemo"
	include "code"
	include "rsp_static"
	include "rsp_dynamic"
	include "cfb"
	include "zbuf"
endwave
