Advertisement
Guest User

main.c

a guest
Nov 14th, 2015
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.99 KB | None | 0 0
  1. #include "fxcg\display.h"
  2. #include "fxcg\keyboard.h"
  3. #include "fxcg\rtc.h"
  4. #include "fxcg\file.h"
  5. #include "keyboard_syscalls.h"
  6. #include "string.h"
  7. #include "stdint.h"
  8. #include "stdlib.h"
  9. #include "ctype.h"
  10. #include "math.h"
  11. #include "stdio.h"
  12.  
  13. int clock_m = 0, clock_t = 0;
  14. int r_a = 0, r_b = 0, r_c = 0, r_d = 0, r_e = 0, r_h = 0, r_l = 0, r_f = 0, r_pc = 0, r_sp = 0, r_m = 0, r_t = 0, r_ime = 0, r_i = 0, r_r = 0;
  15. int Z80_halt = 0, Z80_stop = 0;
  16. int r_hl = 0;
  17.  
  18.  
  19. const int MMU_bios[256] = {
  20.     0x31, 0xFE, 0xFF, 0xAF, 0x21, 0xFF, 0x9F, 0x32, 0xCB, 0x7C, 0x20, 0xFB, 0x21, 0x26, 0xFF, 0x0E,
  21.     0x11, 0x3E, 0x80, 0x32, 0xE2, 0x0C, 0x3E, 0xF3, 0xE2, 0x32, 0x3E, 0x77, 0x77, 0x3E, 0xFC, 0xE0,
  22.     0x47, 0x11, 0x04, 0x01, 0x21, 0x10, 0x80, 0x1A, 0xCD, 0x95, 0x00, 0xCD, 0x96, 0x00, 0x13, 0x7B,
  23.     0xFE, 0x34, 0x20, 0xF3, 0x11, 0xD8, 0x00, 0x06, 0x08, 0x1A, 0x13, 0x22, 0x23, 0x05, 0x20, 0xF9,
  24.     0x3E, 0x19, 0xEA, 0x10, 0x99, 0x21, 0x2F, 0x99, 0x0E, 0x0C, 0x3D, 0x28, 0x08, 0x32, 0x0D, 0x20,
  25.     0xF9, 0x2E, 0x0F, 0x18, 0xF3, 0x67, 0x3E, 0x64, 0x57, 0xE0, 0x42, 0x3E, 0x91, 0xE0, 0x40, 0x04,
  26.     0x1E, 0x02, 0x0E, 0x0C, 0xF0, 0x44, 0xFE, 0x90, 0x20, 0xFA, 0x0D, 0x20, 0xF7, 0x1D, 0x20, 0xF2,
  27.     0x0E, 0x13, 0x24, 0x7C, 0x1E, 0x83, 0xFE, 0x62, 0x28, 0x06, 0x1E, 0xC1, 0xFE, 0x64, 0x20, 0x06,
  28.     0x7B, 0xE2, 0x0C, 0x3E, 0x87, 0xF2, 0xF0, 0x42, 0x90, 0xE0, 0x42, 0x15, 0x20, 0xD2, 0x05, 0x20,
  29.     0x4F, 0x16, 0x20, 0x18, 0xCB, 0x4F, 0x06, 0x04, 0xC5, 0xCB, 0x11, 0x17, 0xC1, 0xCB, 0x11, 0x17,
  30.     0x05, 0x20, 0xF5, 0x22, 0x23, 0x22, 0x23, 0xC9, 0xCE, 0xED, 0x66, 0x66, 0xCC, 0x0D, 0x00, 0x0B,
  31.     0x03, 0x73, 0x00, 0x83, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x08, 0x11, 0x1F, 0x88, 0x89, 0x00, 0x0E,
  32.     0xDC, 0xCC, 0x6E, 0xE6, 0xDD, 0xDD, 0xD9, 0x99, 0xBB, 0xBB, 0x67, 0x63, 0x6E, 0x0E, 0xEC, 0xCC,
  33.     0xDD, 0xDC, 0x99, 0x9F, 0xBB, 0xB9, 0x33, 0x3E, 0x3c, 0x42, 0xB9, 0xA5, 0xB9, 0xA5, 0x42, 0x4C,
  34.     0x21, 0x04, 0x01, 0x11, 0xA8, 0x00, 0x1A, 0x13, 0xBE, 0x20, 0xFE, 0x23, 0x7D, 0xFE, 0x34, 0x20,
  35.     0xF5, 0x06, 0x19, 0x78, 0x86, 0x23, 0x05, 0x20, 0xFB, 0x86, 0x20, 0xFE, 0x3E, 0x01, 0xE0, 0x50
  36. };
  37.  
  38. char MMU_rom[] = "";
  39. int MMU_eram[8192];
  40. int MMU_wram[8192];
  41. int MMU_zram[127] = {};
  42.  
  43. int MMU_inbios = 1;
  44. int MMU_ie = 0;
  45. int MMU_if = 0;
  46.  
  47.  
  48. int GPU_scrnwidth = 160;
  49. int GPU_scrnheight = 144;
  50. int GPU_scrndata[160 * 144 * 2];
  51. int GPU_vram[8192];
  52. int GPU_oam[160] = {};
  53. int GPU_reg[] = {};
  54. int GPU_tilemap[512][8][8] = {};
  55.  
  56. int GPU_objdatax[40] = {};
  57. int GPU_objdatay[40] = {};
  58. int GPU_objdatatile[40] = {};
  59. int GPU_objdatapalette[40] = {};
  60. int GPU_objdatayflip[40] = {};
  61. int GPU_objdataxflip[40] = {};
  62. int GPU_objdataprio[40] = {};
  63. int GPU_objdatanum[40] = {};
  64.  
  65.  
  66. int GPU_objdatasorted[40] = {};
  67. int GPU_palettebg[4] = {};
  68. int GPU_paletteobj0[4] = {};
  69. int GPU_paletteobj1[4] = {};
  70. int GPU_scanrow[160] = {};
  71.  
  72. int GPU_curline = 0;
  73. int GPU_curscan = 0;
  74. int GPU_linemode = 0;
  75. int GPU_modeclocks = 0;
  76.  
  77. int GPU_yscrl = 0;
  78. int GPU_xscrl = 0;
  79. int GPU_raster = 0;
  80. int GPU_ints = 0;
  81.  
  82. int GPU_lcdon = 0;
  83. int GPU_bgon = 0;
  84. int GPU_objon = 0;
  85. int GPU_winon = 0;
  86.  
  87. int GPU_objsize = 0;
  88.  
  89. int GPU_bgtilebase = 0x0000;
  90. int GPU_bgmapbase = 0x1800;
  91. int GPU_wintilebase = 0x1800;
  92.  
  93. int getCode(char a){
  94.     char AlphabetU[26] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  95.     char AlphabetL[26] = "abcdefghijklmnopqrstuvwxyz";
  96.     int codes[26] = {65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90};
  97.     for(int i = 0; i < 26; i++){
  98.         if(AlphabetL[i] == a || AlphabetU[i] == a)
  99.             return codes[i];
  100.     }
  101.     return 0;
  102. }
  103.  
  104.  
  105. int MMU_rb(int addr) {
  106.    
  107.     switch(addr&0xF000)
  108.     {
  109.       // ROM bank 0
  110.       case 0x0000:
  111.         if(MMU_inbios)
  112.     {
  113.       if(addr<0x0100) return MMU_bios[addr];
  114.       else if(r_pc == 0x0100)
  115.       {
  116.         MMU_inbios = 0;
  117.       }
  118.     }
  119.     else
  120.     {
  121.       return getCode(MMU_rom[addr]);
  122.     }
  123.  
  124.       case 0x1000:
  125.       case 0x2000:
  126.       case 0x3000:
  127.         return getCode(MMU_rom[addr]);
  128.  
  129.       // ROM bank 1
  130.       case 0x4000: case 0x5000: case 0x6000: case 0x7000:
  131.         return getCode(MMU_rom[addr]);
  132.  
  133.       // VRAM
  134.       case 0x8000: case 0x9000:
  135.         return GPU_vram[addr&0x1FFF];
  136.  
  137.       // External RAM
  138.       case 0xA000: case 0xB000:
  139.         return MMU_eram[addr&0x1FFF];
  140.  
  141.       // Work RAM and echo
  142.       case 0xC000: case 0xD000: case 0xE000:
  143.         return MMU_wram[addr&0x1FFF];
  144.  
  145.       // Everything else
  146.       case 0xF000:
  147.         switch(addr&0x0F00)
  148.     {
  149.       // Echo RAM
  150.       case 0x000: case 0x100: case 0x200: case 0x300:
  151.       case 0x400: case 0x500: case 0x600: case 0x700:
  152.       case 0x800: case 0x900: case 0xA00: case 0xB00:
  153.       case 0xC00: case 0xD00:
  154.         return MMU_wram[addr&0x1FFF];
  155.  
  156.           // OAM
  157.       case 0xE00:
  158.         return ((addr&0xFF)<0xA0) ? GPU_oam[addr&0xFF] : 0;
  159.  
  160.           // Zeropage RAM, I/O
  161.       case 0xF00:
  162.         if(addr > 0xFF7F) { return MMU_zram[addr&0x7F]; }
  163.         else switch(addr&0xF0)
  164.         {
  165.         }
  166.     }
  167.     }
  168.     return 0;
  169. };
  170.  
  171. #include "GPU.c"
  172. #include "MMU.c"
  173. #include "z80.c"
  174.  
  175. int main(){
  176.     return 0;
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement