15
15
16
16
#include "InfoNES_Types.h"
17
17
18
+ //#define killsystem //用于LEON,不用InfoNES_System_LEON.cpp文件,现在定义在Makefile中
19
+
20
+ #define killstring //用于LEON,不使用string.h中提供的memcmp、memcpy和memset库函数。
21
+
18
22
#define PocketNES 1 //以查找数组的方式获取指令
19
23
20
- //#define HACK //将各种可能只从RAM中读取的代码简化为只从RAM中读取
24
+ #define HACK //将各种可能只从RAM中读取的代码简化为只从RAM中读取
25
+
26
+ #define splitIO //通过简化6502中的IO读写函数来提高速度
21
27
22
- #define splitIO //通过简化6502种得IO读写函数来提高速度
28
+ #define killif2 //以查找数据指针数组的方式代替6502代码中的条件分支语句
23
29
24
- //#define killif //以查找函数指针数组的方式代替6502代码中的条件分支语句 //速度反而变慢,所以不用
30
+ #define writeIO //设定使用K6502_WriteIO()代替K6502_WritePPU()K6502_WriteAPU()以减少Write6502RAM中的分支
31
+
32
+ //#define killwif //以查找函数指针数组的方式代替6502代码中Write6502RAM的条件分支语句 //速度会稍变慢,暂时不用
33
+ #ifdef killwif
34
+ #ifndef writefunc
35
+ typedef /*static inline*/ void ( * writefunc )( BYTE byData );
36
+ #endif
37
+ extern writefunc PPU_write_tbl [ 8 ];
38
+ //extern BYTE PPU_R( WORD wAddr );
39
+ //extern void PPU_W( WORD wAddr, BYTE byData );
40
+ #endif /* killwif */
41
+
42
+
43
+ //#define killif //以查找函数指针数组的方式代替6502代码中的条件分支语句 //速度反而变慢,所以不用,速度变慢可能是由于新增的函数调用的开销引起的
25
44
#ifdef killif
26
45
27
46
#ifndef readfunc
@@ -119,7 +138,15 @@ extern BYTE *memmap_tbl[8];
119
138
/*-------------------------------------------------------------------*/
120
139
121
140
/* PPU RAM */
141
+ #define splitPPURAM //把PPURAM分割成几块内存,如果游戏测试通过的话,这样做会加快速度和减少内存需求
142
+
143
+ #ifdef splitPPURAM
144
+ extern BYTE PTRAM [];
145
+ extern BYTE NTRAM [];
146
+ extern BYTE PALRAM [];
147
+ #else
122
148
extern BYTE PPURAM [];
149
+ #endif /* splitPPURAM */
123
150
124
151
/* VROM */
125
152
extern BYTE * VROM ;
@@ -160,8 +187,8 @@ extern BYTE PPU_R5;
160
187
extern BYTE PPU_R6 ;
161
188
162
189
//FCEU
163
- extern BYTE PPUGenLatch ;
164
- extern BYTE PPUSPL ;
190
+ // extern BYTE PPUGenLatch;
191
+ // extern BYTE PPUSPL;
165
192
166
193
//extern BYTE PPU_Scr_V;
167
194
//extern BYTE PPU_Scr_V_Next;
@@ -353,19 +380,23 @@ extern WORD PPU_Scanline;
353
380
//extern BYTE PPU_ScanTable[];
354
381
355
382
/* Name Table Bank */
356
- extern BYTE PPU_NameTableBank ;
383
+ // extern BYTE PPU_NameTableBank;
357
384
358
385
///* BG Base Address */
359
386
//extern BYTE *PPU_BG_Base;
360
387
361
388
//nesterJ
389
+ #ifndef INES
362
390
extern WORD bg_pattern_table_addr ;
391
+ #endif /* INES */
363
392
364
393
///* Sprite Base Address */
365
394
//extern BYTE *PPU_SP_Base;
366
395
367
396
//nesterJ
397
+ #ifndef INES
368
398
extern WORD spr_pattern_table_addr ;
399
+ #endif /* INES */
369
400
370
401
/* Sprite Height */
371
402
extern WORD PPU_SP_Height ;
@@ -455,7 +486,7 @@ extern DWORD PAD2_Bit;
455
486
/*-------------------------------------------------------------------*/
456
487
457
488
/* Initialize Mapper */
458
- extern void (* MapperInit )();
489
+ // extern void (*MapperInit)();
459
490
/* Write to Mapper */
460
491
extern void (* MapperWrite )( WORD wAddr , BYTE byData );
461
492
/* Write to SRAM */
@@ -467,7 +498,7 @@ extern void (*MapperWrite)( WORD wAddr, BYTE byData );
467
498
/* Callback at VSync */
468
499
//加速 extern void (*MapperVSync)();
469
500
/* Callback at HSync */
470
- extern void (* MapperHSync )();
501
+ // extern void (*MapperHSync)();
471
502
/* Callback at PPU read/write */
472
503
//加速extern void (*MapperPPU)( WORD wAddr );
473
504
/* Callback at Rendering Screen 1:BG, 0:Sprite */
@@ -477,6 +508,14 @@ extern void (*MapperHSync)();
477
508
/* ROM information */
478
509
/*-------------------------------------------------------------------*/
479
510
511
+ #ifdef killsystem
512
+ extern int RomSize ;
513
+ extern int VRomSize ;
514
+ extern int MapperNo ;
515
+ extern int ROM_Mirroring ;
516
+
517
+ #else /* killsystem */
518
+
480
519
/* .nes File Header */
481
520
struct NesHeader_tag
482
521
{
@@ -499,11 +538,13 @@ extern BYTE ROM_Mirroring;
499
538
extern BYTE ROM_SRAM ;
500
539
extern BYTE ROM_Trainer ;
501
540
extern BYTE ROM_FourScr ;
541
+ #endif /* killsystem */
502
542
503
543
/*-------------------------------------------------------------------*/
504
544
/* Function prototypes */
505
545
/*-------------------------------------------------------------------*/
506
546
547
+ #ifndef killsystem
507
548
/* Initialize InfoNES */
508
549
void InfoNES_Init ();
509
550
@@ -517,19 +558,22 @@ int InfoNES_Load( const char *pszFileName );
517
558
int InfoNES_Reset ();
518
559
519
560
/* Initialize PPU */
520
- void InfoNES_SetupPPU ();
561
+ // void InfoNES_SetupPPU();
521
562
522
563
/* Set up a Mirroring of Name Table */
523
- void InfoNES_Mirroring ( int nType );
564
+ // void InfoNES_Mirroring( int nType );
524
565
525
566
/* The main loop of InfoNES */
526
567
void InfoNES_Main ();
568
+ #endif /* killsystem */
527
569
570
+ #ifndef AFS
528
571
/* The loop of emulation */
529
572
void InfoNES_Cycle ();
573
+ #endif /* AFS */
530
574
531
575
/* A function in H-Sync */
532
- int InfoNES_HSync ();
576
+ // int InfoNES_HSync();
533
577
534
578
/* Render a scanline */
535
579
/* Current Scanline */
0 commit comments