⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genprof.c

📁 一个两碟控制的VCD的代码,两碟之间的转动及连续播放,已大量生产的CODE.
💻 C
字号:
/* Copyright 1996, ESS Technology, Inc.					*//* SCCSID @(#)genprof.c	1.36 11/29/97 *//* * $Log$ *//* * This is modified from version 2.4 of genprof.c *//* * This program generate the necessary profile for making a ROM * * Usage: genprof bank-number vcx_setup rom_size *	bank-number:	bank number (0, 1, 2, 3). 0 is used for download *			simulation *	vcx_setup:	ESS is 1 *			TXC is 100 *	rom_size:	newer boards use 128k ROM *			older boards use 256k ROM */#include <stdio.h>#include <time.h>#include <sys/time.h>int	romsize;			/* ROM size may be different 	*/int	organization	= 1;long lastaddr[] = {	/* Index by bank. 0 is for simulation.		*/    0x00040000,		/* Simulated 256K (0x40000 to 0x80000)		*/    0x04000000,		/* 256K						*/    0x08000000,		/* 256K						*/    0x1c080000,		/* 128K/256K					*/    0x0c100000		/* For browser board only			*/};long romdatastart[] = {	/* Index by bank. 0 is for simulation.		*/    0x00040010,		/* Simulated ROM				*/    0x04000010,    0x08000010,    0x1c060010,    0x1c0e0010		/* For browser board only			*/};long getVersion(){    long result = 0;    char *ptr, version[20];    time_t tmp;    /* Get today's time */    time(&tmp);    strftime(version, 20, "%D", localtime(&tmp));    ptr = version;    while (*ptr) {	if ((*ptr >= '0') && (*ptr <= '9')) 	  result = (result << 4) | (*ptr - '0');	ptr++;    }    return(result);}int main(argc, argv)int argc;char **argv;{    int bank;    if ((argc != 3) || (sscanf(argv[1], "%d", &bank) != 1) ||	(sscanf(argv[2], "%d", &romsize) != 1)) {      fprintf(stderr, "Usage: %s bank-number rom_size\n", argv[0]);      exit(1);    }    /*     * Starting code for 128K ROM is 0X020000 and for 256K ROM is 0X040000     *     * ROM emulator is using bit 17/18 (for 128K vs. 256K ROM) to decide     * whether we are accessing ROM or debug port (if bit 17/18 is high     * then we are accessing ROM). Since 128K ROM ignores bit 17, this     * mechanism is safe.     */    romdatastart[bank] -= ((romsize - 128) * 1024 );    fprintf(stdout, "; GENERATED AUTOMATICALLY!! DON'T MODIFY\n;\n");    fprintf(stdout, ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n");    fprintf(stdout, ";;; Profile for making Bank %1d ROM ;;;\n", bank);    fprintf(stdout, ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n");    fprintf(stdout, "[romversion]\n%08lx\n;\n", getVersion());#ifdef JUMPGAME    fprintf(stdout, "[romsize]\n256k\n;\n");#else#ifdef JUMPVCD    fprintf(stdout, "[romsize]\n256k\n;\n");#else    fprintf(stdout, "[romsize]\n%dk\n;\n", romsize);#endif#endif    fprintf(stdout, ";[divisor]\n;\n");    fprintf(stdout, "[stat]\n;\n");	/* Number of EPROMS needed: 1/2/4 */    fprintf(stdout, "[organization]\n%d\n;\n", organization);    fprintf(stdout, "[bootcode]\n");#ifdef JUMPGAME#ifndef JUMP_512K    fprintf(stdout, "gameboot\n");#endif#endif    fprintf(stdout, "boot\n;\n");    fprintf(stdout, "[codeloc]\n");#ifdef DATA_IN_DRAM    fprintf(stdout, "DATA DRAM\n");#else    fprintf(stdout, "DATA SRAM\n");#endif#ifdef CODE_IN_ROM#ifdef SLAVE_JUMP /* for vcd run on dvd slave */    fprintf(stdout, "TEXT demux.rom DRAM CACHE\n");#else#ifdef COMBINED    fprintf(stdout, "TEXT demux30.rom ROM CACHE\n");#else    fprintf(stdout, "TEXT demux.rom ROM CACHE\n");#endif#endif#ifdef COMBINED    fprintf(stdout, "TEXT rdsa30.rom ROM NONCACHE\n;\n");#else    fprintf(stdout, "TEXT rdsa.rom ROM NONCACHE\n;\n");#endif#else#ifdef COMBINED    fprintf(stdout, "TEXT demux.rom SRAM NONCACHE\n");    fprintf(stdout, "TEXT rdsa.rom SRAM NONCACHE\n;\n");#else    fprintf(stdout, "TEXT demux.rom SRAM NONCACHE\n");    fprintf(stdout, "TEXT rdsa.rom SRAM NONCACHE\n;\n");#endif#endif#ifdef COMBINED    fprintf(stdout, "TEXT drive.rom ROM CACHE\n");#endif    fprintf(stdout, "[register]\n");#ifdef COMBINED    fprintf(stdout, "R23 drive.rom\n");    fprintf(stdout, "R23 demux30.rom\n");    fprintf(stdout, "R24 rdsa30.rom\n;\n");#else    fprintf(stdout, "R23 demux.rom\n");    fprintf(stdout, "R24 rdsa.rom\n;\n");#endif    fprintf(stdout, "[cmdblock]\n");#ifdef SLAVE_JUMP    fprintf(stdout, "copy uncomp.dat 206003c\n");    fprintf(stdout, "set4 demux.rom text\n");    fprintf(stdout, "set5 20e0000\n");    fprintf(stdout, "set25 2060040\n");    fprintf(stdout, "set24 uncomp.txt\n");    fprintf(stdout, "jsr uncomp.txt\n");#endif /*SLAVE jump insert decompress stub */#ifdef COMBINED    fprintf(stdout, "copy  demux30.rom data\n");    fprintf(stdout, "copy  rdsa30.rom   data\n");    fprintf(stdout, "clear demux30.rom bss\n");    fprintf(stdout, "clear rdsa30.rom bss\n");#else    fprintf(stdout, "copy  demux.rom data\n");    fprintf(stdout, "copy  rdsa.rom   data\n");    fprintf(stdout, "clear demux.rom bss\n");    fprintf(stdout, "clear rdsa.rom bss\n");#endif#ifdef CODE_IN_ROM#ifdef   SLAVE_JUMP    fprintf(stdout, "set23 20e0000\n");#else#ifdef COMBINED    fprintf(stdout, "set23 drive.rom\n");#else    fprintf(stdout, "set23 demux.rom\n");#endif#endif /* SALVE_JUMP */#ifdef COMBINED    fprintf(stdout, "set24 rdsa30.rom\n");#else    fprintf(stdout, "set24 rdsa.rom\n");#endif#else    fprintf(stdout, "copy demux.rom text 2000\n");    fprintf(stdout, "copy rdsa.rom text 12400\n");    fprintf(stdout, "set23  2000\n");    fprintf(stdout, "set24 12400\n");#endif#ifdef COMBINED    fprintf(stdout, "jump  rdsa30.rom START\n;\n");#else    fprintf(stdout, "jump  rdsa.rom START\n;\n");#endif    fprintf(stdout, "[lastaddr]\n%lx\n;\n", lastaddr[bank]);    fprintf(stdout, "[romfile]\n");#ifndef COMBINED#ifdef VCDROM    fprintf(stdout, "tmp.dat\n");#endif#endif#ifdef JUMPGAME#ifndef JUMP_512K    fprintf(stdout, "game.dat\n");#endif#else#if defined(JUMPVCD) || defined(SLAVE_JUMP)    fprintf(stdout, "tmp.dat\n");#endif#endif    fprintf(stdout, "const.dat\n");#ifdef SLAVE_JUMP    fprintf(stdout, "uncomp.dat\n");    fprintf(stdout, "uncomp.txt\n");    fprintf(stdout, "rdsa.rom program\n");    fprintf(stdout, "demux.rom program compress\n");#else#ifdef COMBINED    fprintf(stdout, "drive.rom program\n");    fprintf(stdout, "demux30.rom program\n");    fprintf(stdout, "rdsa30.rom   program\n;\n");#else    fprintf(stdout, "demux.rom program\n");    fprintf(stdout, "rdsa.rom   program\n;\n");#endif#endif#ifdef COMBINED    fprintf(stdout, "__reload.dat\n");    fprintf(stdout, "[reload]\n");    fprintf(stdout, "drive.rom\n");#endif    fprintf(stdout, "[output]\nbank%d%%d.rom\n;\n", (bank > 3) ? 3 : bank);    fprintf(stdout, "[variables]\n");    fprintf(stdout, "_vcx_romdatastart const.dat\n" );#ifdef COMBINED    fprintf(stdout, "_data_loc_30 __reload.dat\n");#endif#ifdef JUMP_512K    fprintf(stdout, "_Jump_addr boot\n");#endif    return(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -