diff options
author | Alec Murphy <alec@checksum.fail> | 2017-02-11 19:41:44 -0500 |
---|---|---|
committer | Alec Murphy <alec@checksum.fail> | 2017-02-11 19:41:44 -0500 |
commit | 68fc81e5acff82e2d34b8e1f088c463fafc1e5d3 (patch) | |
tree | 4339b5058af8f0edb8ca648dbe7a06ca5f44de82 | |
parent | 360455ba9cbde0702f55d3db837ead75dd45fd3d (diff) |
Add basic background scrolling.
-rwxr-xr-x | BG1.GR.Z | bin | 0 -> 16561 bytes | |||
-rwxr-xr-x | LEVEL.LVL.Z | bin | 1144 -> 1083 bytes | |||
-rw-r--r-- | LVLEDIT.HC | 3 | ||||
-rw-r--r-- | MEGAMAN.HC | 3 | ||||
-rw-r--r-- | MMBG.HC | 25 | ||||
-rw-r--r-- | MMGAME.HC | 4 | ||||
-rw-r--r-- | MMSOUND.HC | 3 |
7 files changed, 37 insertions, 1 deletions
diff --git a/BG1.GR.Z b/BG1.GR.Z Binary files differnew file mode 100755 index 0000000..f793eed --- /dev/null +++ b/BG1.GR.Z diff --git a/LEVEL.LVL.Z b/LEVEL.LVL.Z Binary files differindex e643007..3939e74 100755 --- a/LEVEL.LVL.Z +++ b/LEVEL.LVL.Z @@ -1,6 +1,9 @@ Bool MM_EDIT_MODE = TRUE; CDC *Buffer = DCAlias(); +CDC *BgrImage = DCNew(0, 0); CDC *BgrMap = DCNew(512, 512); +CDC *BgrLayer = DCNew(0, 0); + I64 PtrMsGrab, PtrMsStd; I64 TxtB, TxtH, TxtL; U8 ScanCode; @@ -1,6 +1,9 @@ Bool MM_EDIT_MODE = FALSE; CDC *Buffer = DCAlias(); +CDC *BgrImage = GRRead("BG1.GR.Z"); CDC *BgrMap = GRRead("LEVEL.LVL.Z"); +CDC *BgrLayer = DCNew(640, 480); + I64 PtrMsGrab, PtrMsStd; U8 ScanCode; @@ -3,6 +3,9 @@ I64 BgrState; I64 BgrMapStartPosY, BgrMapPosX, BgrMapPosY; I64 BgrScrollPosX, BgrScrollPosY; +CDC *OpaqueTile = DCNew(48, 48); +DCFill(OpaqueTile, DKGRAY); + U16 GetTilesAdj(I64 _xx, I64 _yy, I64 _dir) { I64 TileIncr, TileH, TileL, TileZ; TileIncr = 0; @@ -73,7 +76,10 @@ I64 AlignToMapTile(I64 _xx, I64 _yy, U8 _tile) { }; U0 FreeBgrs() { + Free(BgrImage); Free(BgrMap); + Free(BgrLayer); + Free(OpaqueTile); }; U0 UpdateBgr() { @@ -81,13 +87,20 @@ U0 UpdateBgr() { BgrIncrY=0; BgrMapPosX=BgrScrollPosX/48; BgrMapPosY=BgrMapStartPosY+(BgrScrollPosY/48); - DCFill(Buffer, DKGRAY); + if (MM_EDIT_MODE==FALSE) { + DCFill(Buffer, DKGRAY); + GrBlot(Buffer, 0, 0, DCExt(BgrImage, (BgrScrollPosX % (BgrImage->width-640)), BgrScrollPosY, (BgrScrollPosX % (BgrImage->width-640)) + 639, BgrScrollPosY + 479)); + } else { + DCFill(Buffer, DKGRAY); + }; + while (BgrIncrY<(48*20)) { BgrIncrX = 0; while (BgrIncrX<(48*26)) { switch (GrPeek(BgrMap, BgrMapPosX, BgrMapPosY)) { // Ground tiles case 0x30: + GrBlot(Buffer, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, OpaqueTile); MMSprite(SPR_Tiles, 0, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, 255, 0, 255+47, 0+47, 0); break; // Jump-through blocks @@ -96,42 +109,52 @@ U0 UpdateBgr() { break; // Left1stPanel case 0x31: + GrBlot(Buffer, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, OpaqueTile); MMSprite(SPR_Tiles, 0, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, 0, 51, 0+47, 51+47, 0); break; // TopLeft1stPanel case 0x32: + GrBlot(Buffer, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, OpaqueTile); MMSprite(SPR_Tiles, 0, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, 0, 0, 0+47, 0+47, 0); break; // Left2ndPanel case 0x33: + GrBlot(Buffer, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, OpaqueTile); MMSprite(SPR_Tiles, 0, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, 51, 51, 51+47, 51+47, 0); break; // TopLeft2ndPanel case 0x34: + GrBlot(Buffer, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, OpaqueTile); MMSprite(SPR_Tiles, 0, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, 51, 0, 51+47, 0+47, 0); break; // MidPanel case 0x35: + GrBlot(Buffer, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, OpaqueTile); MMSprite(SPR_Tiles, 0, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, 102, 51, 102+47, 51+47, 0); break; // TopMidPanel case 0x36: + GrBlot(Buffer, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, OpaqueTile); MMSprite(SPR_Tiles, 0, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, 102, 0, 102+47, 0+47, 0); break; // Right2ndPanel case 0x37: + GrBlot(Buffer, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, OpaqueTile); MMSprite(SPR_Tiles, 0, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, 153, 51, 153+47, 51+47, 0); break; // TopRight2ndPanel case 0x38: + GrBlot(Buffer, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, OpaqueTile); MMSprite(SPR_Tiles, 0, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, 153, 0, 153+47, 0+47, 0); break; // Right1stPanel case 0x39: + GrBlot(Buffer, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, OpaqueTile); MMSprite(SPR_Tiles, 0, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, 204, 51, 204+47, 51+47, 0); break; // TopRight1stPanel case 0x3A: + GrBlot(Buffer, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, OpaqueTile); MMSprite(SPR_Tiles, 0, BgrIncrX - (BgrScrollPosX % 48), BgrIncrY, 204, 0, 204+47, 0+47, 0); break; // Ladder @@ -281,6 +281,7 @@ U0 GameLoop() { if (MMHealth>0) { Sfx(SFX_MMHIT); MMInvCtr = 1; MMInvFlop = 0; }; if (MMHealth<=0) { for(MMDeathInit=0;MMDeathInit<12;MMDeathInit++) { MMDeathX[MMDeathInit] = MMX; MMDeathY[MMDeathInit] = MMY-MMJumpY; } + Sfx(MUS_STOP); Sfx(SFX_MMDEATH); MMDeath=1; MMDeathPit=0; @@ -371,6 +372,7 @@ U0 GameLoop() { if (MMDeathPit==1) { for(MMDeathInit=0;MMDeathInit<12;MMDeathInit++) { MMDeathX[MMDeathInit] = -999; MMDeathY[MMDeathInit] = -999; } + Sfx(MUS_STOP); Sfx(SFX_MMDEATH); MMDeath=1; MMDeathPit=1; @@ -607,10 +609,12 @@ U0 MegaMan() { *gr.fp_draw_grab_ms = &HideMs; *gr.fp_draw_ms = &HideMs; DCFill(Buffer,BLACK); + Sfx(MUS_DEMO); GameLoop; GrUpdateScrn; }; // Exit game. + Sfx(MUS_STOP); FreeBgrs; FreeSprites; PaletteSetStd; @@ -1,3 +1,6 @@ +#define MUS_STOP 0x40 +#define MUS_DEMO 0x41 + #define SFX_MMTELIN 0x54 #define SFX_MMSHOT 0x55 #define SFX_MMJUMP 0x56 |