ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/Frodo4/Src/main.cpp
(Generate patch)

Comparing Frodo4/Src/main.cpp (file contents):
Revision 1.4 by cebix, 2003-07-01T19:04:37Z vs.
Revision 1.7 by cebix, 2004-01-12T15:13:20Z

# Line 1 | Line 1
1   /*
2   *  main.cpp - Main program
3   *
4 < *  Frodo (C) 1994-1997,2002-2003 Christian Bauer
4 > *  Frodo (C) 1994-1997,2002-2004 Christian Bauer
5   *
6   *  This program is free software; you can redistribute it and/or modify
7   *  it under the terms of the GNU General Public License as published by
# Line 28 | Line 28
28  
29  
30   // Global variables
31 + C64 *TheC64 = NULL;             // Global C64 object
32   char AppDirPath[1024];  // Path of application directory
33  
34  
# Line 40 | Line 41 | char AppDirPath[1024]; // Path of applic
41   #define BASIC_ROM_FILE  "FrodoRsrc:Basic_ROM"
42   #define KERNAL_ROM_FILE "FrodoRsrc:Kernal_ROM"
43   #define CHAR_ROM_FILE   "FrodoRsrc:Char_ROM"
44 < #define FLOPPY_ROM_FILE "FrodoRsrc:1541_ROM"
44 > #define DRIVE_ROM_FILE  "FrodoRsrc:1541_ROM"
45   #else
46   #define BASIC_ROM_FILE DATADIR "Basic ROM"
47   #define KERNAL_ROM_FILE DATADIR "Kernal ROM"
48   #define CHAR_ROM_FILE DATADIR "Char ROM"
49 < #define FLOPPY_ROM_FILE DATADIR "1541 ROM"
49 > #define DRIVE_ROM_FILE DATADIR "1541 ROM"
50   #endif
51  
52  
53 + // Builtin ROMs
54 + #include "Basic_ROM.h"
55 + #include "Kernal_ROM.h"
56 + #include "Char_ROM.h"
57 + #include "1541_ROM.h"
58 +
59 +
60   /*
61   *  Load C64 ROM files
62   */
63  
64 < bool Frodo::load_rom_files(void)
64 > void Frodo::load_rom(const char *which, const char *path, uint8 *where, size_t size, const uint8 *builtin)
65   {
66 <        FILE *file;
67 <
68 <        // Load Basic ROM
69 <        if ((file = fopen(BASIC_ROM_FILE, "rb")) != NULL) {
70 <                if (fread(TheC64->Basic, 1, 0x2000, file) != 0x2000) {
71 <                        ShowRequester("Can't read 'Basic ROM'.", "Quit");
64 <                        return false;
65 <                }
66 <                fclose(file);
67 <        } else {
68 <                ShowRequester("Can't find 'Basic ROM'.", "Quit");
69 <                return false;
70 <        }
71 <
72 <        // Load Kernal ROM
73 <        if ((file = fopen(KERNAL_ROM_FILE, "rb")) != NULL) {
74 <                if (fread(TheC64->Kernal, 1, 0x2000, file) != 0x2000) {
75 <                        ShowRequester("Can't read 'Kernal ROM'.", "Quit");
76 <                        return false;
77 <                }
78 <                fclose(file);
79 <        } else {
80 <                ShowRequester("Can't find 'Kernal ROM'.", "Quit");
81 <                return false;
66 >        FILE *f = fopen(path, "rb");
67 >        if (f) {
68 >                size_t actual = fread(where, 1, size, f);
69 >                fclose(f);
70 >                if (actual == size)
71 >                        return;
72          }
73  
74 <        // Load Char ROM
75 <        if ((file = fopen(CHAR_ROM_FILE, "rb")) != NULL) {
76 <                if (fread(TheC64->Char, 1, 0x1000, file) != 0x1000) {
77 <                        ShowRequester("Can't read 'Char ROM'.", "Quit");
88 <                        return false;
89 <                }
90 <                fclose(file);
91 <        } else {
92 <                ShowRequester("Can't find 'Char ROM'.", "Quit");
93 <                return false;
94 <        }
95 <
96 <        // Load 1541 ROM
97 <        if ((file = fopen(FLOPPY_ROM_FILE, "rb")) != NULL) {
98 <                if (fread(TheC64->ROM1541, 1, 0x4000, file) != 0x4000) {
99 <                        ShowRequester("Can't read '1541 ROM'.", "Quit");
100 <                        return false;
101 <                }
102 <                fclose(file);
103 <        } else {
104 <                ShowRequester("Can't find '1541 ROM'.", "Quit");
105 <                return false;
106 <        }
74 >        // Use builtin ROM
75 >        printf("%s ROM file (%s) not readable, using builtin.\n", which, path);
76 >        memcpy(where, builtin, size);
77 > }
78  
79 <        return true;
79 > void Frodo::load_rom_files()
80 > {
81 >        load_rom("Basic", BASIC_ROM_FILE, TheC64->Basic, BASIC_ROM_SIZE, builtin_basic_rom);
82 >        load_rom("Kernal", KERNAL_ROM_FILE, TheC64->Kernal, KERNAL_ROM_SIZE, builtin_kernal_rom);
83 >        load_rom("Char", CHAR_ROM_FILE, TheC64->Char, CHAR_ROM_SIZE, builtin_char_rom);
84 >        load_rom("1541", DRIVE_ROM_FILE, TheC64->ROM1541, DRIVE_ROM_SIZE, builtin_drive_rom);
85   }
86  
87  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines