/****************************************************************************/ /* The Legend of Zelda: Link's Awakening */ /* By: Jason Ho */ /* */ /* This header contains data pertaining to rooms in the Zelda world. */ /****************************************************************************/ /*---------------------------------------------------------------------------*/ /* Function Prototypes */ /*---------------------------------------------------------------------------*/ void ScrollRoomUp(void); void ScrollRoomDown(void); void ScrollRoomLeft(void); void ScrollRoomRight(void); /*---------------------------------------------------------------------------*/ /* Global Variables */ /*---------------------------------------------------------------------------*/ // Shows how rooms connect to each other. Data in the world_map // are the room numbers from room_list. //--------------------------------------------------------------- int world_map[16][16] = { //COL0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 {4 ,8 ,14 ,15 ,0 ,0 ,17 ,20 ,0 ,0 ,0 ,0 ,0 ,0 ,33 ,34 },// ROW 0 {0 ,0 ,0 ,0 ,0 ,18 ,19 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },// 1 {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },// 2 {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },// 3 {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,32 ,28 ,29 ,0 ,0 ,0 ,0 ,0 },// 4 {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,27 ,26 ,30 ,31 ,0 ,0 ,0 ,0 },// 5 {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },// 6 {0 ,0 ,9 ,10 ,11 ,21 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },// 7 {0 ,0 ,6 ,7 ,12 ,22 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },// 8 {0 ,0 ,3 ,5 ,13 ,23 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },// 9 {0 ,0 ,1 ,2 ,16 ,24 ,25 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },// 10 {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },// 11 {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },// 12 {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },// 13 {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },// 14 {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 } // 15 }; //------------------------------------------------ // room_list [ROOM #] [ROW] [COLUMN] [TERRAIN] // TERRAIN information is defined in "terrain.h" //------------------------------------------------ int room_list[40][8][10][2] = { {{GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2}, {GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2}, {GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2}, {GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2}, //Blank Template for a room {GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2}, {GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2}, {GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2}, {GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2,GRASS2}}, {{PALM4 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2}, {EDGE6 ,SAND2 ,PALM1 ,PALM2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2}, {EDGE7 ,SAND2 ,PALM3 ,PALM4 ,EDGE1 ,STAIR1 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2}, {EDGE7 ,SAND2 ,EDGE1 ,EDGE2 ,EDGE10 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2}, //1 - {EDGE7 ,SAND3 ,EDGE3 ,HOUSE4,CLIFF2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2}, {EDGE7 ,SAND3 ,EDGE3,SAND5 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2}, {EDGE16,EDGE2,EDGE10,SHORE1 ,SHORE1 ,SHORE1 ,SHORE1,SHORE1 ,SHORE1 ,SHORE1}, {CLIFF3,CLIFF1,CLIFF2,WATER5,WATER5 ,WATER5 ,WATER5,WATER5 ,WATER5 ,WATER5}}, {{SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,EDGE3}, {SAND2 ,PALM1 ,PALM2 ,SAND2 ,SAND2 ,SAND2 ,FENCE4 ,FENCE4 ,FENCE4 ,EDGE3}, {EDGE11 ,PALM3 ,PALM4 ,SAND5 ,SAND4,SAND4 ,DONE1 ,HOUSE4,DONE2 ,EDGE3}, //2 - {SAND2 ,SAND2 ,PALM1 ,PALM2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,EDGE3}, {SAND2 ,SAND2 ,PALM3 ,PALM4 ,SAND5 ,SAND2 ,SAND3 ,SAND2 ,SAND2 ,EDGE3}, {SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,EDGE3}, {SHORE1,SHORE1,SHORE1,SHORE1,SHORE1,SHORE1 ,SHORE1,SHORE1,SHORE1,EDGE3}, {WATER5 ,WATER5 ,WATER5 ,WATER5 ,WATER5 ,WATER5 ,WATER5,WATER5,WATER5,EDGE3}}, {{PALM4 ,SAND2 ,EDGE5 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4}, {PALM2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,PALM1 ,PALM2 ,SAND2 ,PALM1}, {PALM4 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,PALM3 ,PALM4 ,SAND2 ,PALM3}, //3 - {PALM2 ,SAND2 ,PALM1 ,PALM2 ,SAND2 ,SAND2 ,SAND2 ,PALM1 ,PALM2 ,PALM1}, {PALM4 ,SAND2 ,PALM3 ,PALM4 ,SAND2 ,SAND2 ,SAND2 ,PALM3 ,PALM4 ,PALM3}, {PALM2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,PALM1}, {PALM4 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,PALM3}, {PALM2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2}}, {{WALL1 ,WALL2 ,WALL2 ,WALL2 ,WALL2 ,WALL2 ,WALL2 ,CABINET1,WALL2 ,WALL3 }, {WALL8 ,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR1,CABINET2,BOX1 ,WALL4 }, {WALL8 ,BED1 ,FLOOR2,BED1 ,FLOOR2,FLOOR2,FLOOR1,FLOOR1,BOX1 ,WALL4 }, {WALL8 ,BED2 ,FLOOR2,BED2 ,FLOOR2,FLOOR2,FLOOR1,FLOOR1,FLOOR1,WALL4 }, //4 - {WALL8 ,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR1,FLOOR1,CHAIR1,WALL4 }, {WALL8 ,FLOOR1,FLOOR1,FLOOR1,FLOOR1,FLOOR1,FLOOR1,TABLE1,TABLE2,WALL4 }, {WALL8 ,POT1 ,POT1 ,FLOOR1,FLOOR1,FLOOR1,FLOOR1,FLOOR1,STAIRSUP,WALL4}, {WALL7 ,WALL6 ,WALL6 ,WALL6 ,DOOR2 ,WALL6 ,WALL6 ,WALL6 ,WALL6 ,WALL5 }}, {{EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE19}, {PALM2 ,PALM1 ,PALM2 ,SAND2 ,SAND2 ,SAND2 ,PALM1 ,PALM2 ,SAND2 ,EDGE3}, {PALM4 ,PALM3 ,PALM4 ,SAND2 ,SAND2 ,SAND2 ,PALM3 ,PALM4 ,SAND2 ,EDGE3}, //5 - {PALM2 ,SAND2 ,PALM1 ,PALM2 ,SAND2 ,SAND2 ,SAND2 ,PALM1 ,PALM2 ,EDGE3}, {PALM4 ,SAND2 ,PALM3 ,PALM4 ,SAND2 ,SAND2 ,SAND2 ,PALM3 ,PALM4 ,EDGE3}, {PALM2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,EDGE3}, {PALM4 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,EDGE3}, {SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,EDGE3}}, {{PALM4 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2}, {PALM2 ,ROOF6 ,ROOF5 ,ROOF4 ,SAND2 ,SAND2 ,PALM1 ,PALM2 ,SAND2 ,SAND2}, {PALM4 ,ROOF7,ROOF8,ROOF9,SAND2 ,SAND2 ,PALM3 ,PALM4 ,SAND2 ,SAND2}, //6 - {PALM2 ,HOUSE2 ,HOUSE3 ,HOUSE2 ,SAND2 ,SAND2 ,SAND2 ,PALM1 ,PALM2 ,SAND2}, {PALM4 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,PALM3 ,PALM4 ,SAND2}, {PALM2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2}, {PALM4 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2}, {PALM2 ,SAND2 ,EDGE1 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2}}, {{SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,PALM1}, {SAND2 ,PALM1 ,PALM2 ,SAND2 ,SAND2 ,SAND2 ,PALM1 ,PALM2 ,SAND2 ,PALM3}, {SAND2 ,PALM3 ,PALM4 ,SAND2 ,SAND2 ,SAND2 ,PALM3 ,PALM4 ,SAND2 ,PALM1}, //7 - S {SAND2 ,SAND2 ,PALM1 ,PALM2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,PALM3}, {SAND2 ,SAND2 ,PALM3 ,PALM4 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,PALM1}, {SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,PALM3}, {SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,PALM1}, {EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE11,PALM3}}, {{WALL1 ,WALL2 ,WALL2 ,WALL2 ,WALL2 ,WALL2 ,WALL2 ,CABINET1,WALL2 ,WALL3 }, {WALL8 ,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR1,CABINET2,BOX1 ,WALL4 }, {WALL8 ,BED1 ,FLOOR2,BED1 ,FLOOR2,FLOOR2,FLOOR1,FLOOR1,BOX1 ,WALL4 }, {WALL8 ,BED2 ,FLOOR2,BED2 ,FLOOR2,FLOOR2,FLOOR1,FLOOR1,FLOOR1,WALL4 }, //8 - {WALL8 ,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR1,FLOOR1,CHAIR1,WALL4 }, {WALL8 ,FLOOR1,FLOOR1,FLOOR1,FLOOR1,FLOOR1,FLOOR1,TABLE1,TABLE2,WALL4 }, {WALL8 ,POT1 ,POT1 ,FLOOR1,FLOOR1,FLOOR1,FLOOR1,FLOOR1,FLOOR1,WALL4}, {WALL7 ,WALL6 ,WALL6 ,WALL6 ,DOOR2 ,WALL6 ,WALL6 ,WALL6 ,WALL6 ,WALL5 }}, {{CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1}, {CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1}, {CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF5,SAND2}, //9 - {CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF5,SAND2}, {CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF5,SAND2}, {CLIFF1,HOUSE4,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF2,SAND2}, {ROCK1,SAND2 ,BOY1 ,PLANT1 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2}, {PALM2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2}}, {{CLIFF1,CLIFF1,CLIFF1,CLIFF1,EDGE17 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4}, {CLIFF1,CLIFF1,CLIFF1,CLIFF1,EDGE7 ,GRASS2,GRASS2 ,GRASS2,GRASS2,GRASS2}, {SAND2,CLIFF4,CLIFF1,CLIFF1,EDGE7 ,HOLEDOWN,EDGE1 ,EDGE14,EDGE13,EDGE15}, //10 - {SAND2,CLIFF4,CLIFF1,CLIFF1,EDGE16 ,EDGE2 ,EDGE10,CLIFF1,CLIFF1,CLIFF1}, {SAND2,CLIFF4,CLIFF1,CLIFF1,CLIFF1 ,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1}, {SAND2,CLIFF3,CLIFF1,CLIFF1,CLIFF1 ,CLIFF1,CLIFF1,CLIFF1,CLIFF1,CLIFF1}, {SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,PALM1}, {SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,SAND2 ,PALM3}}, {{EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4}, {GRASS2 ,GRASS2,GRASS2 ,GRASS2 ,TREE7 ,TREE8 ,PLANT1 ,PLANT1 ,GRASS2 ,GRASS2}, {EDGE2 ,EDGE6 ,GRASS2 ,FENCE1 ,TREE9 ,TREE10 ,FENCE1 ,FENCE1 ,GRASS2 ,GRASS2}, //11 - {CLIFF1 ,EDGE7 ,GRASS2 ,FENCE1 ,ROOF10 ,ROOF10 ,ROOF10 ,FENCE1 ,GRASS2 ,GRASS2}, {CLIFF1 ,EDGE7 ,GRASS2 ,FENCE1 ,HOUSE2 ,HOUSE3 ,HOUSE2 ,FENCE1 ,GRASS2 ,GRASS2}, {CLIFF1 ,EDGE7 ,GRASS2 ,FENCE1 ,PLANT1 ,ROAD1 ,PLANT1 ,FENCE1 ,GRASS2 ,GRASS2}, {PALM2 ,EDGE7 ,GRASS2 ,FENCE1 ,FENCE1 ,ROAD1 ,FENCE1 ,FENCE1 ,GRASS2 ,GRASS2}, {PALM4 ,EDGE7 ,GRASS2 ,GRASS2 ,GRASS2 ,ROAD1 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2}}, {{PALM2 ,EDGE7 ,GRASS2 ,ROAD1 ,ROAD1 ,ROAD1 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2}, {PALM4 ,EDGE7 ,GRASS2 ,ROAD1 ,TREE7 ,TREE8 ,TREE7 ,TREE8 ,GRASS2 ,GRASS2}, {PALM2 ,EDGE7 ,GRASS2 ,ROAD1 ,TREE9 ,TREE10 ,TREE9 ,TREE10 ,GRASS2 ,GRASS2}, //12 - {PALM4 ,EDGE7 ,GRASS2 ,ROAD1 ,PLANT1 ,FLOWER1,TREE7 ,TREE8 ,GRASS2 ,GRASS2}, {PALM2 ,EDGE7 ,GRASS2 ,ROAD1 ,PLANT1 ,PLANT1 ,TREE9 ,TREE10 ,ROAD1 ,GRASS2 }, {PALM4 ,EDGE7 ,GRASS2 ,ROAD1 ,PLANT1 ,PLANT1 ,PLANT1 ,GRASS2 ,ROAD1 ,GRASS2}, {PALM2 ,EDGE7 ,GRASS2 ,ROAD1 ,ROAD1 ,ROAD1 ,ROAD1 ,ROAD1 ,ROAD1 ,GRASS2}, {PALM4 ,EDGE7 ,GRASS2 ,ROAD1 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2}}, {{WATER1 ,EDGE7 ,GRASS2 ,ROAD1 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2}, {EDGE17 ,EDGE9 ,GRASS2 ,ROAD1 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2}, {EDGE7 ,TREE7 ,TREE8 ,ROAD1 ,ROOF6 ,ROOF5 ,ROOF4 ,TREE7 ,TREE8 ,GRASS2}, //13 - {EDGE7 ,TREE9 ,TREE10 ,ROAD1 ,ROOF7 ,ROOF8 ,ROOF9 ,TREE9 ,TREE10 ,GRASS2}, {EDGE7 ,TREE7 ,TREE8 ,ROAD1 ,HOUSE2 ,HOUSE3 ,HOUSE2 ,GRASS2 ,GRASS2 ,GRASS2}, {EDGE7 ,TREE9 ,TREE10 ,ROAD1 ,ROAD1 ,ROAD1 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2}, {EDGE7 ,GRASS2 ,GRASS2 ,ROAD1 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2}, {EDGE7 ,GRASS2 ,GRASS2 ,ROAD1 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2}}, {{WALL1 ,WALL2 ,WALL2 ,WALL2 ,WALL2 ,WALL2 ,WALL2 ,CABINET1,WALL2 ,WALL3 }, {WALL8 ,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR1,CABINET2,FLOOR2,WALL4 }, {WALL8 ,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR1,FLOOR1,FLOOR2,WALL4 }, {WALL8 ,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR1,FLOOR1,FLOOR1,WALL4 }, //14 - {WALL8 ,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR1,FLOOR1,CHAIR1,WALL4 }, {WALL8 ,FLOOR1,FLOOR1,FLOOR1,FLOOR1,FLOOR1,FLOOR1,FLOOR2,FLOOR2,WALL4 }, {WALL8 ,FLOOR2,FLOOR2,FLOOR1,FLOOR1,FLOOR1,FLOOR1,FLOOR1,FLOOR1,WALL4}, {WALL7 ,WALL6 ,WALL6 ,WALL6 ,DOOR2 ,WALL6 ,WALL6 ,WALL6 ,WALL6 ,WALL5 }}, {{WALL1 ,WALL2 ,WALL2 ,WALL2 ,WALL2 ,WALL2 ,WALL2 ,CABINET1,WALL2 ,WALL3 }, {WALL8 ,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR2,FLOOR1,CABINET2,BOX1 ,WALL4 }, {WALL8 ,BED1 ,FLOOR2,BED1 ,BED1 ,FLOOR2,FLOOR1,FLOOR1,BOX1 ,WALL4 }, {WALL8 ,BED2 ,FLOOR2,BED2 ,BED2 ,FLOOR2,FLOOR1,FLOOR1,FLOOR1,WALL4 }, //15 - {WALL8 ,POT1 ,POT1 ,FLOOR2,FLOOR2,FLOOR2,FLOOR1,FLOOR1,CHAIR1,WALL4 }, {WALL8 ,POT1 ,POT1 ,FLOOR1,FLOOR1,FLOOR1,FLOOR1,TABLE1,TABLE2,WALL4 }, {WALL8 ,POT1 ,POT1 ,FLOOR1,FLOOR1,FLOOR1,FLOOR1,FLOOR1,FLOOR1,WALL4}, {WALL7 ,WALL6 ,WALL6 ,WALL6 ,DOOR2 ,WALL6 ,WALL6 ,WALL6 ,WALL6 ,WALL5 }}, {{EDGE7 ,GRASS2 ,GRASS2 ,ROAD1 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2}, {EDGE7 ,GRASS2 ,GRASS2 ,ROAD1 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2}, {EDGE7 ,GRASS2 ,GRASS2 ,ROAD1 ,PLANT1 ,PLANT1 ,PLANT1 ,TREE7 ,TREE8 ,GRASS2}, //16 - {EDGE7 ,GRASS2 ,GRASS2 ,ROAD1 ,PLANT1 ,PLANT1 ,PLANT1 ,TREE9 ,TREE10 ,GRASS2}, {EDGE7 ,TREE7 ,TREE8 ,ROAD1 ,PLANT1 ,HOLEDOWN,PLANT1 ,GRASS2 ,GRASS2 ,GRASS2 }, {EDGE7 ,TREE9 ,TREE10 ,ROAD1 ,ROAD1 ,ROAD1 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2}, {EDGE7 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2}, {EDGE8 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2}}, {{DWALL1 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL3}, {DWALL8 ,DLIGHT ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,DLIGHT ,DWALL4}, {DWALL8 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,DWALL10}, //17 - {DWALL8 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2}, {DWALL8 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,DWALL11 }, {DWALL8 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,FLOOR2 ,STAIRSUP,FLOOR2,FLOOR2 ,FLOOR2 ,DWALL4}, {DWALL8 ,DLIGHT ,FLOOR2 ,FLOOR2 ,DFLOOR ,DFLOOR ,DFLOOR ,FLOOR2 ,DLIGHT ,DWALL4}, {DWALL7 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL5}}, {{WHITE1 ,DWALL1 ,LIGHT1 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,LIGHT1 ,DWALL2 ,DWALL2}, {DWALL1 ,DWALL9 ,DFLOOR2,DFLOOR2 ,DFLOOR2 ,DFLOOR2,DFLOOR2,DFLOOR2,DFLOOR2,DFLOOR2}, {DWALL8 ,DFLOOR2,DFLOOR2,DFLOOR2 ,DFLOOR2 ,DFLOOR2,DFLOOR2,DFLOOR2,DFLOOR2,DFLOOR2}, //18 - {DWALL8 ,DFLOOR2,DFLOOR2,DFLOOR2 ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR}, {DWALL8 ,DFLOOR2,DFLOOR2,DFLOOR2 ,DFLOOR ,DFLOOR2,DFLOOR2,DFLOOR2,DFLOOR2,DFLOOR2}, {DWALL8 ,DFLOOR2,DFLOOR2,DFLOOR2 ,DFLOOR ,DFLOOR2,DFLOOR2,DFLOOR2,DFLOOR2,DFLOOR2}, {DWALL8 ,DLIGHT ,DFLOOR2,DFLOOR2 ,DFLOOR ,DFLOOR2,DFLOOR2,DFLOOR2,DFLOOR2,DFLOOR2}, {DWALL7 ,DWALL6 ,DWALL6 ,DWALL6 ,DOOR2 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6}}, {{DWALL2 ,DWALL2 ,LIGHT1 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,LIGHT1 ,DWALL2 ,DWALL3}, {DFLOOR2 ,DFLOOR2,DFLOOR2,DFLOOR2 ,DFLOOR2 ,DFLOOR2,DFLOOR2,DFLOOR2 ,DLIGHT ,DWALL4}, {DFLOOR2 ,DFLOOR2,DFLOOR2,DFLOOR2 ,DFLOOR2 ,DFLOOR2,DFLOOR2,DFLOOR2 ,DFLOOR2 ,DWALL4}, //19 {DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR ,STAIRSUP,DFLOOR2 ,DWALL4}, {DFLOOR2 ,DFLOOR2,DFLOOR2,DFLOOR2 ,DFLOOR2 ,DFLOOR2,DFLOOR2,DFLOOR2 ,DFLOOR2 ,DWALL4}, {DFLOOR2 ,DFLOOR2,DFLOOR2,DFLOOR2 ,DFLOOR2 ,DFLOOR2,DFLOOR2,DFLOOR2 ,DFLOOR2 ,DWALL4}, {DFLOOR2 ,DFLOOR2,DFLOOR2,DFLOOR2 ,DFLOOR2 ,DFLOOR2,DFLOOR2,DFLOOR2 ,DLIGHT ,DWALL4}, {DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL5}}, {{DWALL1 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL3}, {DWALL8 ,STAIRSUP,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,HOLE1 ,DFLOOR2 ,DFLOOR2 ,DWALL4}, {DWALL9 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,HOLE1 ,DFLOOR2 ,DFLOOR2 ,DWALL4}, //20 {DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,HOLE1 ,DFLOOR2 ,DFLOOR2 ,DWALL4}, {DWALL12 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,HOLE1 ,DFLOOR2 ,DFLOOR2 ,DWALL4 }, {DWALL8 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,HOLE1 ,DFLOOR2 ,DFLOOR2 ,DWALL4}, {DWALL8 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DWALL4}, {DWALL7 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL5}}, {{EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE4 ,EDGE9 ,TREE7 ,TREE8 ,EDGE5 ,EDGE19}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,TREE7 ,TREE8 ,TREE9 ,TREE10 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,TREE9 ,TREE10 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, //21 - {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}}, {{GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, //22 - {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}}, {{GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,ROOF6 ,ROOF5 ,ROOF4 ,GRASS2 ,GRASS2 ,EDGE3}, //23 - {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,ROOF1 ,ROOF2 ,ROOF3 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,HOUSE2 ,HOUSE3 ,HOUSE2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,MARINE1 ,GRASS2 ,SIGN1 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}}, {{GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,EDGE3}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,PLANT1 ,PLANT1 ,PLANT1 ,PLANT1 ,GRASS1 ,EDGE5}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,PLANT1 ,PLANT1 ,PLANT1 ,PLANT1 ,GRASS1 ,GRASS1}, //24 - {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,GRASS1 ,GRASS1 ,GRASS1 ,GRASS1 ,GRASS1}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,PLANT1 ,PLANT1 ,PLANT1 ,PLANT1 ,PLANT1 ,GRASS1}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,PLANT1 ,PLANT1 ,PLANT1 ,HOLE1 ,HOLE1 ,GRASS1}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,PLANT1 ,PLANT1 ,PLANT1 ,HOLE1 ,PLANT1 ,EDGE1}, {EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE2 ,EDGE20}}, {{GRASS2 ,EDGE17 ,EDGE4 ,EDGE9 ,CLIFF4 ,CLIFF1 ,CLIFF1 ,CLIFF1 ,CLIFF5 ,TREE9}, {EDGE4 ,EDGE9 ,TREE7 ,TREE8 ,CLIFF4 ,CLIFF1 ,CLIFF1 ,CLIFF1 ,CLIFF5 ,TREE7}, {GRASS2 ,GRASS2 ,TREE9 ,TREE10 ,CLIFF4 ,CLIFF1 ,CLIFF1 ,CLIFF1 ,CLIFF5 ,TREE9}, //25 - {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,CLIFF3 ,DONE1 ,HOUSE4 ,DONE2 ,CLIFF2 ,TREE7}, {GRASS2 ,GRASS2 ,GRASS2 ,GRASS2 ,PLANT1 ,PLANT1 ,GRASS2 ,PLANT1 ,PLANT1 ,TREE9}, {GRASS2 ,TREE7 ,TREE8 ,GRASS2 ,PLANT1 ,PLANT1 ,PLANT1 ,HOLE1 ,HOLE1 ,TREE7}, {EDGE6 ,TREE9 ,TREE10 ,GRASS2 ,PLANT1 ,PLANT1 ,PLANT1 ,STAIR2 ,SWORD ,TREE9}, {EDGE7 ,TREE7 ,TREE8 ,TREE7 ,TREE8 ,TREE7 ,TREE8 ,TREE7 ,TREE8 ,TREE7}}, {{D1WALL1 ,D1WALL5 ,D1WALL5 ,D1WALL10 ,DFLOOR3 ,D1WALL11 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL2}, {D1WALL8 ,DLIGHT ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR ,DLIGHT ,D1WALL6}, {D1WALL10 ,DFLOOR ,DGUY ,DGUY ,DFLOOR3 ,DFLOOR3 ,DGUY ,DGUY ,DFLOOR ,D1WALL6}, //26 {DFLOOR3 ,DFLOOR ,DGUY ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DGUY ,DFLOOR ,D1WALL6}, {D1WALL9 ,DFLOOR ,DGUY ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DGUY ,DFLOOR ,D1WALL6 }, {D1WALL8 ,DFLOOR ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR ,D1WALL6}, {D1WALL8 ,DLIGHT ,DFLOOR ,DDOOR2 ,DFLOOR3 ,DDOOR2 ,DFLOOR ,DFLOOR ,DLIGHT ,D1WALL6}, {D1WALL4 ,D1WALL7 ,D1WALL7 ,DDOOR1 ,DDOOR3 ,DDOOR1 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL3}}, {{D1WALL1 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL2}, {D1WALL8 ,DLIGHT ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DLIGHT ,D1WALL6}, {D1WALL8 ,DFLOOR3 ,DFLOOR3 ,DPLANT1 ,DPLANT1 ,DPLANT1 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL11}, //27 {D1WALL8 ,DFLOOR3 ,DFLOOR3 ,DPLANT1 ,CHEST1 ,DPLANT1 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3}, {D1WALL8 ,DFLOOR3 ,DFLOOR3 ,DPLANT1 ,DPLANT1 ,DPLANT1 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL12 }, {D1WALL8 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL6}, {D1WALL8 ,DLIGHT ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DLIGHT ,D1WALL6}, {D1WALL4 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL3}}, {{D1WALL1 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL2}, {D1WALL8 ,DLIGHT ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DLIGHT ,D1WALL6}, {D1WALL10 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL11}, //28 {DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3}, {D1WALL9 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL12}, {D1WALL8 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL6}, {D1WALL8 ,DFLOOR3 ,DFLOOR ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR ,DFLOOR3 ,D1WALL6}, {D1WALL4 ,D1WALL7 ,D1WALL7 ,D1WALL9 ,DFLOOR3 ,D1WALL12 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL3}}, {{D1WALL1 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL2}, {D1WALL8 ,DLIGHT ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DLIGHT ,D1WALL6}, {D1WALL10 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL6}, //29 {DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL6}, {D1WALL9 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL6}, {D1WALL8 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL6}, {D1WALL8 ,DLIGHT ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DLIGHT ,D1WALL6}, {D1WALL4 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL9 ,DFLOOR3 ,D1WALL12 ,D1WALL7 ,D1WALL7 ,D1WALL3}}, {{D1WALL1 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL10,DFLOOR3 ,D1WALL11 ,D1WALL5 ,D1WALL5 ,D1WALL2}, {D1WALL8 ,DLIGHT ,DPLANT1 ,DPLANT1 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DLIGHT ,D1WALL6}, {D1WALL8 ,DPLANT1 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL6}, //30 {D1WALL8 ,DPLANT1 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL11}, {D1WALL8 ,DPLANT1 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3}, {D1WALL8 ,DPLANT1 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL12}, {D1WALL8 ,DLIGHT ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DLIGHT ,D1WALL6}, {D1WALL4 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL3}}, {{D1WALL1 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,BOSSDOOR,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL2}, {D1WALL8 ,DLIGHT ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR ,DFLOOR ,DLIGHT ,D1WALL6}, {D1WALL8 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR ,CHEST1 ,DFLOOR ,D1WALL6}, //31 {D1WALL10 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR ,DFLOOR ,DFLOOR ,D1WALL6}, {DFLOOR3 ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR3 ,D1WALL6}, {D1WALL9 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL6}, {D1WALL8 ,DLIGHT ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DLIGHT ,D1WALL6}, {D1WALL4 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL3}}, {{D1WALL1 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL5 ,D1WALL2}, {D1WALL8 ,DLIGHT ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DLIGHT ,D1WALL6}, {D1WALL8 ,HOLEDOWN,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL11}, //32 {D1WALL8 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3}, {D1WALL8 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL12}, {D1WALL8 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,D1WALL6}, {D1WALL8 ,DLIGHT ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DFLOOR3 ,DLIGHT ,D1WALL6}, {D1WALL4 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL7 ,D1WALL3}}, {{DWALL1 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL3}, {DWALL8 ,DLIGHT ,DFLOOR ,CHEST1 ,DFLOOR ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DLIGHT ,DWALL4}, {DWALL8 ,DFLOOR2 ,DFLOOR ,DFLOOR ,DFLOOR ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DWALL10}, //13 - {DWALL8 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2}, {DWALL8 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DWALL11 }, {DWALL8 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DWALL4}, {DWALL8 ,DLIGHT ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DLIGHT ,DWALL4}, {DWALL7 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL5}}, {{DWALL1 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL2 ,DWALL3}, {DWALL8 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DPLANT1 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DWALL4}, {DWALL9 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DWALL4}, //23 {DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DPLANT1 ,DWALL4}, {DWALL12 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,STAIRSUP ,DWALL4 }, {DWALL8 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DPLANT1 ,DWALL4}, {DWALL8 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DPLANT1 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DFLOOR2 ,DWALL4}, {DWALL7 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL6 ,DWALL5}}, }; //--------------------------------------------------------------- // world_map [ROW] [COLUMN] //--------------------------------------------------------------------------- // room_mob_list [ROOM] [MOB #] [MOB DATA] // Lists the mobs in each room, where MOB DATA are the // initial values of that MOB (mob number, mob coordinate x, mob coordinate y). // MOB # refers which mob in the room; Each room can have a max of 5 mobs // // These arent the only variables that keep track of mob data. The reason // only these 3 are listed, however, is so it wont take up so much memory. // Only the room-specific data is recorded here. //--------------------------------------------------------------------------- int room_mob_list[35][5][3] = { {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,5,5},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}},//5 {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}},//10 {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{DOG1,3,3},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{CHICKEN1,3,2},{DOG1,8,5},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}},//15 {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}},//20 {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,5,5},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{DMOB1,2,2},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}},//27 {{DMOB1,5,2},{DMOB1,8,2},{-1,0,0},{-1,0,0},{-1,0,0}}, {{DMOB1,6,6},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{GOBLIN1,6,6},{DMOB1,5,5},{SPIKE1,6,5},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{GOBLIN1,2,2},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, {{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0},{-1,0,0}}, }; /*---------------------------------------------------------------------------*/ /* Functions */ /*---------------------------------------------------------------------------*/ /*===========================================================================*/ /* Loads a room from room_list into room_buffer. This is executed everytime */ /* Link moves to a new room, so that the original room wont be modified. */ /* Also adds animated terrain to the terrain_animation_list, and loads */ /* mobs into mob_list. */ /*===========================================================================*/ void LoadRoom(int room) { int count1, count2, count3; int index = 0; //------------------------------------ // Load Terrain and Animated Terrain //------------------------------------ for (count1=0;count1<8;count1++) //Row { for (count2=0;count2<10;count2++) //Column { for (count3=0;count3<2;count3++) //Terrain Data { room_buffer[count1][count2][count3] = room_list[room][count1][count2][count3]; } //-------------------------------------------------- // Scrolls through all the terrain, and if they are // animated, add it to the terrain_animation_list //-------------------------------------------------- if (room_buffer[count1][count2][TERRAIN_PROPERTIES] & ANIMATED) { terrain_animation_list[index][0] = room_buffer[count1][count2][TERRAIN_PIC]; terrain_animation_list[index][1] = count1; terrain_animation_list[index][2] = count2; terrain_animation_list[index][3] = 1; index++; } } } //----------------------------------------------------------------------------- // Sets the last value in terrain_animation_list to -1. This allows the // loop in AnimateTerrain to know when to stop checking for animated terrains //----------------------------------------------------------------------------- terrain_animation_list[index][0] = -1; //------------------------------ // Clears all mobs in mob_list //------------------------------ for (count1=0;count1<5;count1++) mob_list[count1][MOB_NUMBER] = -1; //----------------------------- // Load mobs into the room //----------------------------- index = 0; for (count1=0;count1<5;count1++) //Each room can hold 5 mobs; count1 scrolls through all 5 { if (room_mob_list[room][count1][MOB_NUMBER] >= 0) //If mob number is -1, it doesnt load the mob { //------------------------------ //Sets room-specific variables //------------------------------ mob_list[index][MOB_NUMBER] = room_mob_list[room][count1][MOB_NUMBER]; //------------------------------------------------ // Convert the mob coordinates into pixel x,y's. //------------------------------------------------ mob_list[index][MOB_X] = 16 * room_mob_list[room][count1][MOB_X]; mob_list[index][MOB_Y] = 16 * room_mob_list[room][count1][MOB_Y]; //--------------------------------------------- ---------------------------------------- //Sets the variables that arent room-specific (can be set to whatever - doesnt matter.) //-------------------------------------------------------------------------------------- mob_list[index][MOB_FRAME] = 0; mob_list[index][MOB_DIRECTION] = DOWN; mob_list[index][MOB_PAUSE] = 0; mob_list[index][MOB_VAR1] = 0; //Free variable to store mob_specific data mob_list[index][MOB_VAR2] = 0; //Free variable to store mob_specific data index++; //Increase the load number in mob_list } } //--------------------------------- // Clears all objects in the room //--------------------------------- for (count1=0;count1<50;count1++) object_list[count1][OBJECT_NUMBER] = -1; } /*===========================================================================*/ /* Scrolls into the room UP from current room */ /*===========================================================================*/ void ScrollRoomUp(void) { int count1, count2; int row_gain=0; int shift=0; //--------------------- // Scrolls 100 pixels //--------------------- while (row_gain*16+shift < 100) { //--------------- // Scroll Speed //--------------- shift+=10; //-------------------------------------------------------------------------- // A shift of 16 is essentially moving another row and having a shift of 0 //-------------------------------------------------------------------------- if (shift >= 16) { shift -= 16; row_gain++; } //-------------------- // Clears the screen //-------------------- memset(light,0,LCD_SIZE); memset(dark,0,LCD_SIZE); //---------------------------------------------------------- // This loop scrolls the current room out from the bottom //---------------------------------------------------------- for (count1=0;count1<10;count1++) { for (count2=0;count2<6-row_gain;count2++) //Row { Sprite16(count1*16, count2*16+shift+row_gain*16, 16, img_map_light[ room_buffer[count2][count1][TERRAIN_PIC] ], light, SPRT_XOR); Sprite16(count1*16, count2*16+shift+row_gain*16, 16, img_map_dark[ room_buffer[count2][count1][TERRAIN_PIC] ], dark, SPRT_XOR); } } //---------------------------------------------------------- // This loop scrolls the next room in from the top //---------------------------------------------------------- for (count1=0;count1<10;count1++) //Column { //-------------------------------------------------------------------- // Draw's first row (with shift), using pictures from the next room //-------------------------------------------------------------------- ShiftImage(TERRAIN, room_list[world_map[link_map_row-1][link_map_col]] [7-row_gain] [count1] [TERRAIN_PIC], UP, 16-shift, FALSE); Sprite16(count1*16, 0, 16, image_buffer_light, light, SPRT_XOR); Sprite16(count1*16, 0, 16, image_buffer_dark, dark, SPRT_XOR); //--------------------------------------------- // Fills in the remaining next room pictures //--------------------------------------------- for (count2=0;count2= 0) DrawImage(MOB, mob_list[count1][MOB_NUMBER], mob_list[count1][MOB_X], mob_list[count1][MOB_Y] + shift + row_gain*16, A_NORMAL); } //------------------------------------------------ // Scrolls next room enemies in from the top //------------------------------------------------ for (count1=0;count1<5;count1++) { if (room_mob_list[world_map[link_map_row-1][link_map_col]][count1][MOB_NUMBER] >= 0) DrawImage(MOB, room_mob_list[world_map[link_map_row-1][link_map_col]][count1][MOB_NUMBER], room_mob_list[world_map[link_map_row-1][link_map_col]][count1][MOB_X]*16, room_mob_list[world_map[link_map_row-1][link_map_col]][count1][MOB_Y]*16 - 8*16 + (row_gain*16+shift), A_NORMAL); } //---------------------------------------------------- // Draw Link in sync with the moving screen. The // row_gain*16+shift<100 check is so Link doesnt get // pushed too far down until hes not visible. //---------------------------------------------------- if (row_gain*16+shift < 100) link_y += 10; DrawImage(LINK, link_picture, link_x, link_y, A_NORMAL); //-------------------------------------- // Copy virtual screens to real screen //-------------------------------------- memcpy(GetPlane(0),light,LCD_SIZE); memcpy(GetPlane(1),dark,LCD_SIZE); } //--------------------------------------- // Since Link's total screen shift is 0 // when he enters UP, add it to his Y //--------------------------------------- link_y += 16+12; //-------------------------- // Set Link's new position //-------------------------- link_map_row--; //----------------------------------------- // Load the new room into the room_buffer //----------------------------------------- LoadRoom(world_map[link_map_row][link_map_col]); } /*===========================================================================*/ /* Scrolls into the room DOWN from current room */ /*===========================================================================*/ void ScrollRoomDown(void) { int count1, count2; int row_gain=0; int shift=0; //--------------------- // Scrolls 100 pixels //--------------------- while (row_gain*16+shift < 100) { //--------------- // Scroll Speed //--------------- shift+=10; //-------------------------------------------------------------------------- // A shift of 16 is essentially moving another row and having a shift of 0 //-------------------------------------------------------------------------- if (shift >= 16) { shift -= 16; row_gain++; } //-------------------- // Clears the screen //-------------------- memset(light,0,LCD_SIZE); memset(dark,0,LCD_SIZE); //---------------------------------------------------------- // This loop scrolls the current room out from the top //---------------------------------------------------------- for (count1=0;count1<10;count1++) //Column { //---------------------------------------- // Draws first row pictures with shift //---------------------------------------- ShiftImage(TERRAIN, room_buffer[screen_row_gain+row_gain][count1][TERRAIN_PIC], UP, screen_shift+shift, FALSE); Sprite16(count1*16, 0, 16, image_buffer_light, light, SPRT_XOR); Sprite16(count1*16, 0, 16, image_buffer_dark, dark, SPRT_XOR); //--------------------------------------------------------------- // Starts on the 2nd row of pictures, and finishes the screen. //--------------------------------------------------------------- for (count2=1;count2<7-row_gain;count2++) //Row { Sprite16(count1*16,count2*16-screen_shift-shift,16,img_map_light[ room_buffer[count2+screen_row_gain+row_gain][count1][TERRAIN_PIC] ],light,SPRT_XOR); Sprite16(count1*16,count2*16-screen_shift-shift,16,img_map_dark[ room_buffer[count2+screen_row_gain+row_gain][count1][TERRAIN_PIC] ],dark,SPRT_XOR); } } //---------------------------------------------------------- // This loop scrolls the next room in from the bottom //---------------------------------------------------------- for (count1=0;count1<10;count1++) //Column { for (count2=0;count2= 0) DrawImage(MOB, mob_list[count1][MOB_NUMBER], mob_list[count1][MOB_X], mob_list[count1][MOB_Y] - shift - row_gain*16, A_NORMAL); } //------------------------------------------------ // Scrolls next room enemies in from the bottom //------------------------------------------------ for (count1=0;count1<5;count1++) { if (room_mob_list[world_map[link_map_row+1][link_map_col]][count1][MOB_NUMBER] >= 0) DrawImage(MOB, room_mob_list[world_map[link_map_row+1][link_map_col]][count1][MOB_NUMBER], room_mob_list[world_map[link_map_row+1][link_map_col]][count1][MOB_X]*16, room_mob_list[world_map[link_map_row+1][link_map_col]][count1][MOB_Y]*16 + screen_row_gain*16 + screen_shift + 100 - (row_gain*16+shift), A_NORMAL); } //---------------------------------------------------------------- // Draw Link in sync with the moving screen // 8*16-16 is where link is when he moves down. subtracting 100-16 // is where you want him to be when the screen is done scrolling. //---------------------------------------------------------------- if (row_gain*16+shift < 100) link_y -= 10; DrawImage(LINK, link_picture, link_x, link_y, A_NORMAL); //-------------------------------------- // Copy virtual screens to real screen //-------------------------------------- memcpy(GetPlane(0),light,LCD_SIZE); memcpy(GetPlane(1),dark,LCD_SIZE); } //-------------------------------------------- // Since Link's total screen shift is 16+12 // when he enters DOWN, subtract it to his Y //-------------------------------------------- link_y -= 16+12; //-------------------------- // Set Link's new position //-------------------------- link_map_row++; //----------------------------------------- // Load the new room into the room_buffer //----------------------------------------- LoadRoom(world_map[link_map_row][link_map_col]); } /*===========================================================================*/ /* Scrolls into the room LEFT from current room */ /*===========================================================================*/ void ScrollRoomLeft(void) { int count1, count2; int column_gain = 0; //--------------------------------------------------------------------------------------------- // This loop assumes that the screen shifts 16 pixels at a time. This is because // room scrolling UP, and DOWN takes 10 loops to finish (a shift of 10 each time), so // with this knowledge we can omit the shift aspect of this function and just use column_gain //--------------------------------------------------------------------------------------------- while (column_gain < 10) { column_gain++; //-------------------- // Clears the screen //-------------------- memset(light,0,LCD_SIZE); memset(dark,0,LCD_SIZE); //---------------------------------------------------------- // This loop scrolls the current room out to the right //---------------------------------------------------------- for (count1=0;count1<(10-column_gain);count1++) //Column { //---------------------------------------- // Draws first row pictures with shift //---------------------------------------- ShiftImage(TERRAIN, room_buffer[screen_row_gain][count1][TERRAIN_PIC], UP, screen_shift, FALSE); Sprite16((column_gain+count1)*16, 0, 16, image_buffer_light, light, SPRT_XOR); Sprite16((column_gain+count1)*16, 0, 16, image_buffer_dark, dark, SPRT_XOR); //------------------------------------------------ // Draws rest of the rows to complete the screen //------------------------------------------------ for (count2=1;count2<7;count2++) //Row { Sprite16((column_gain+count1)*16, count2*16-screen_shift, 16, img_map_light[room_buffer[count2+screen_row_gain][count1][TERRAIN_PIC]], light, SPRT_XOR); Sprite16((column_gain+count1)*16, count2*16-screen_shift, 16, img_map_dark[room_buffer[count2+screen_row_gain][count1][TERRAIN_PIC]], dark, SPRT_XOR); } } //--------------------------------------------------- // This loop scrolls the next room in from the left //--------------------------------------------------- for (count1=0;count1= 0) DrawImage(MOB, mob_list[count1][MOB_NUMBER], mob_list[count1][MOB_X] + column_gain*16, mob_list[count1][MOB_Y], A_NORMAL); } //--------------------------------------------- // Scrolls next room enemies in from the left //--------------------------------------------- for (count1=0;count1<5;count1++) { if (room_mob_list[world_map[link_map_row][link_map_col-1]][count1][MOB_NUMBER] >= 0) DrawImage(MOB, room_mob_list[world_map[link_map_row][link_map_col-1]][count1][MOB_NUMBER], room_mob_list[world_map[link_map_row][link_map_col-1]][count1][MOB_X]*16 - (10-column_gain)*16, room_mob_list[world_map[link_map_row][link_map_col-1]][count1][MOB_Y]*16, A_NORMAL); } //-------------------------------------------- // Draw Link in sync with the moving screen. //-------------------------------------------- if (column_gain != 10) link_x += 16; DrawImage(LINK, link_picture, link_x, link_y, A_NORMAL); //-------------------------------------- // Copy virtual screens to real screen //-------------------------------------- memcpy(GetPlane(0),light,LCD_SIZE); memcpy(GetPlane(1),dark,LCD_SIZE); } //-------------------------- // Set Link's new position //-------------------------- link_map_col--; //----------------------------------------- // Load the new room into the room_buffer //----------------------------------------- LoadRoom(world_map[link_map_row][link_map_col]); } /*===========================================================================*/ /* Scrolls into the room RIGHT from current room */ /*===========================================================================*/ void ScrollRoomRight(void) { int count1, count2; int column_gain = 0; //--------------------------------------------------------------------------------------------- // This loop assumes that the screen shifts 16 pixels at a time. This is because // room scrolling UP, and DOWN takes 10 loops to finish (a shift of 10 each time), so // with this knowledge we can omit the shift aspect of this function and just use column_gain //--------------------------------------------------------------------------------------------- while (column_gain < 10) { column_gain++; //-------------------- // Clears the screen //-------------------- memset(light,0,LCD_SIZE); memset(dark,0,LCD_SIZE); //---------------------------------------------------------- // This loop scrolls the current room out to the left //---------------------------------------------------------- for (count1=column_gain;count1<10;count1++) //Column { //---------------------------------------- // Draws first row pictures with shift //---------------------------------------- ShiftImage(TERRAIN, room_buffer[screen_row_gain][count1][TERRAIN_PIC], UP, screen_shift, FALSE); Sprite16((count1-column_gain)*16, 0, 16, image_buffer_light, light, SPRT_XOR); Sprite16((count1-column_gain)*16, 0, 16, image_buffer_dark, dark, SPRT_XOR); //------------------------------------------------ // Draws rest of the rows to complete the screen //------------------------------------------------ for (count2=1;count2<7;count2++) //Row { Sprite16((count1-column_gain)*16, count2*16-screen_shift, 16, img_map_light[room_buffer[count2+screen_row_gain][count1][TERRAIN_PIC]], light, SPRT_XOR); Sprite16((count1-column_gain)*16, count2*16-screen_shift, 16, img_map_dark[room_buffer[count2+screen_row_gain][count1][TERRAIN_PIC]], dark, SPRT_XOR); } } //--------------------------------------------------- // This loop scrolls the next room in from the right //--------------------------------------------------- for (count1=0;count1= 0) DrawImage(MOB, mob_list[count1][MOB_NUMBER], mob_list[count1][MOB_X] - column_gain*16, mob_list[count1][MOB_Y], A_NORMAL); } //--------------------------------------------- // Scrolls next room enemies in from the right //--------------------------------------------- for (count1=0;count1<5;count1++) { if (room_mob_list[world_map[link_map_row][link_map_col+1]][count1][MOB_NUMBER] >= 0) DrawImage(MOB, room_mob_list[world_map[link_map_row][link_map_col+1]][count1][MOB_NUMBER], room_mob_list[world_map[link_map_row][link_map_col+1]][count1][MOB_X]*16 + (10-column_gain)*16, room_mob_list[world_map[link_map_row][link_map_col+1]][count1][MOB_Y]*16, A_NORMAL); } //-------------------------------------------- // Draw Link in sync with the moving screen //-------------------------------------------- if (column_gain != 10) { link_x -= 16; //------------------------------------------------------------------ // DrawImage cannot draw pictures that have both a negative X // coordinate, and a negative Y coordinate, so to prevent Link // from disappearing, if his X is negative, set it to 0. This is // the only one of the ScrollRoom functions that needs this check. //------------------------------------------------------------------ if (link_x < 0) link_x = 0; } DrawImage(LINK, link_picture, link_x, link_y, A_NORMAL); //-------------------------------------- // Copy virtual screens to real screen //-------------------------------------- memcpy(GetPlane(0),light,LCD_SIZE); memcpy(GetPlane(1),dark,LCD_SIZE); } //-------------------------- // Set Link's new position //-------------------------- link_map_col++; //----------------------------------------- // Load the new room into the room_buffer //----------------------------------------- LoadRoom(world_map[link_map_row][link_map_col]); }