Initial commit
This commit is contained in:
parent
ae30afb16b
commit
0566ecfdd7
|
@ -0,0 +1,169 @@
|
||||||
|
object AboutDialog: TAboutDialog
|
||||||
|
Left = 0
|
||||||
|
Top = 0
|
||||||
|
BorderIcons = [biSystemMenu, biMinimize]
|
||||||
|
BorderStyle = bsSingle
|
||||||
|
Caption = 'About'
|
||||||
|
ClientHeight = 255
|
||||||
|
ClientWidth = 417
|
||||||
|
Color = clBtnFace
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'Tahoma'
|
||||||
|
Font.Style = []
|
||||||
|
OldCreateOrder = False
|
||||||
|
PixelsPerInch = 96
|
||||||
|
TextHeight = 13
|
||||||
|
object Shape1: TShape
|
||||||
|
Left = 64
|
||||||
|
Top = 0
|
||||||
|
Width = 353
|
||||||
|
Height = 216
|
||||||
|
Pen.Color = clWhite
|
||||||
|
end
|
||||||
|
object Bevel1: TBevel
|
||||||
|
Left = 0
|
||||||
|
Top = 216
|
||||||
|
Width = 417
|
||||||
|
Height = 2
|
||||||
|
end
|
||||||
|
object Shape2: TShape
|
||||||
|
Left = 0
|
||||||
|
Top = 0
|
||||||
|
Width = 65
|
||||||
|
Height = 217
|
||||||
|
Brush.Color = clRed
|
||||||
|
Pen.Color = clSkyBlue
|
||||||
|
Pen.Style = psClear
|
||||||
|
Pen.Width = 0
|
||||||
|
end
|
||||||
|
object AppNameLabel: TLabel
|
||||||
|
Left = 72
|
||||||
|
Top = 8
|
||||||
|
Width = 46
|
||||||
|
Height = 13
|
||||||
|
Caption = 'RedMap'
|
||||||
|
Color = clWhite
|
||||||
|
Font.Charset = ANSI_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'Tahoma'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = False
|
||||||
|
end
|
||||||
|
object Label1: TLabel
|
||||||
|
Left = 72
|
||||||
|
Top = 192
|
||||||
|
Width = 271
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Joint effort by Xeon, Koolboyman, and BlueSonic'
|
||||||
|
Color = clWhite
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'Tahoma'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
end
|
||||||
|
object VersionLabel: TLabel
|
||||||
|
Left = 72
|
||||||
|
Top = 24
|
||||||
|
Width = 79
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Version 2.0 Beta'
|
||||||
|
Color = clWhite
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object Image1: TImage
|
||||||
|
Left = 16
|
||||||
|
Top = 16
|
||||||
|
Width = 32
|
||||||
|
Height = 32
|
||||||
|
Picture.Data = {
|
||||||
|
055449636F6E0000010002001010100000000000280100002600000020201000
|
||||||
|
00000000E80200004E0100002800000010000000200000000100040000000000
|
||||||
|
C000000000000000000000001000000000000000000000000000800000800000
|
||||||
|
00808000800000008000800080800000C0C0C000808080000000FF0000FF0000
|
||||||
|
00FFFF00FF000000FF00FF00FFFF0000FFFFFF000000000000000000000F7000
|
||||||
|
000F7000880F7088880F7088880F7088880F70880000000000000000FFFFFFFF
|
||||||
|
FFFFFFFFF888888FF888888FFFFFFFFFFFFFFFFF0FFF00FF0F0FF00F00FF0F0F
|
||||||
|
0F0F00FF0F0F0F0F00FF0F0F0F0F0F0F0F0F000F00FFF00F0F0FF0FF77777777
|
||||||
|
7777770700000000000000007777777777777777E7E7FFFF0000FFFF0000FFFF
|
||||||
|
0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
|
||||||
|
0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF280000002000000040000000
|
||||||
|
0100040000000000800200000000000000000000100000000000000000000000
|
||||||
|
000080000080000000808000800000008000800080800000C0C0C00080808000
|
||||||
|
0000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000
|
||||||
|
000000000000000000000000000F7000000F70000000000000000000880F7088
|
||||||
|
880F70888888888887000000880F7088880F7088888888888700000000000000
|
||||||
|
000000007777777777000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000F888888F
|
||||||
|
F888888F77777777FF000000FFFFFFFFFFFFFFFF77777777770000000FFF00FF
|
||||||
|
0F0FF00FF777778FFF00000000FF0F0F0F0F00FFFFFFFFFFFF0000000F0F0F0F
|
||||||
|
00FF0F0F778F7777FF0000000F0F0F0F0F0F000F778F7777FF00000000FFF00F
|
||||||
|
0F0FF0FFFFFFFFFFFF00000077777777777777077777778FFF00000000000000
|
||||||
|
000000007777778FFF0000007777777777777777FFFFFFFFFF000000F777778F
|
||||||
|
F777778FF777778FFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000778F7777
|
||||||
|
778F7777778F7777FF000000778F7777778F7777778F7777FF000000FFFFFFFF
|
||||||
|
FFFFFFFFFFFFFFFFFF0000007777778F7777778F7777778FFF0000007777778F
|
||||||
|
7777778F7777778FFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF00000080000008
|
||||||
|
8000000880000008FF00000007F8F88007F8F88007F8F880FF0000000F7F8780
|
||||||
|
0F7F87800F7F8780FF0000000FF7F8F00FF7F8F00FF7F8F0FF0000000FFF7F80
|
||||||
|
0FFF7F800FFF7F80FF0000000FFFF7F00FFFF7F00FFFF7F0FF00000080000008
|
||||||
|
8000000880000008FF000000777777777777777777777777FF000000E7E7FFFF
|
||||||
|
0000003F0000001F0000001F0000001F0000001F0000001F0000001F0000001F
|
||||||
|
0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F
|
||||||
|
0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F
|
||||||
|
0000001F0000001F0000001F0000001F0000001F0000001F0000001F0D0A}
|
||||||
|
end
|
||||||
|
object Button1: TButton
|
||||||
|
Left = 336
|
||||||
|
Top = 224
|
||||||
|
Width = 75
|
||||||
|
Height = 23
|
||||||
|
Cancel = True
|
||||||
|
Caption = 'OK'
|
||||||
|
Default = True
|
||||||
|
ModalResult = 1
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
object Memo1: TMemo
|
||||||
|
Left = 72
|
||||||
|
Top = 48
|
||||||
|
Width = 337
|
||||||
|
Height = 137
|
||||||
|
BorderStyle = bsNone
|
||||||
|
Lines.Strings = (
|
||||||
|
'Special thanks to BlueSonic (aka Jigglypuff) for letting me use '
|
||||||
|
'some of GoldMap to forge this frankenstein of a program. And '
|
||||||
|
'for putting up with all my questions regarding Delphi.'
|
||||||
|
''
|
||||||
|
'Koolboyman for the immense amount of data and information you '
|
||||||
|
'provided me. '
|
||||||
|
''
|
||||||
|
'Tauwasser for showing me how the warp-to points, connection '
|
||||||
|
'data, and ram addresses where calculated. '
|
||||||
|
''
|
||||||
|
'And also, tons of respect to the author of ZeroMap, you where '
|
||||||
|
'my inspiration for how to go about displaying the connected '
|
||||||
|
'maps.'
|
||||||
|
''
|
||||||
|
'This program is not endorsed or supported by Nintendo, and the '
|
||||||
|
'author is not affiliated with any other corporate entity.'
|
||||||
|
''
|
||||||
|
'This program is Freeware and provided "as is". The author '
|
||||||
|
|
||||||
|
'cannot be held liable for damages any kind arising from it'#39's use' +
|
||||||
|
' or '
|
||||||
|
'presence.'
|
||||||
|
''
|
||||||
|
'Pok'#233'mon is copyright of '#169'1995-2005 '
|
||||||
|
'Nintendo/Creatures Inc./GAME FREAK Inc.')
|
||||||
|
ReadOnly = True
|
||||||
|
ScrollBars = ssVertical
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,33 @@
|
||||||
|
unit About;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||||
|
Dialogs, StdCtrls, pngimage, ExtCtrls;
|
||||||
|
|
||||||
|
type
|
||||||
|
TAboutDialog = class(TForm)
|
||||||
|
Shape1: TShape;
|
||||||
|
Bevel1: TBevel;
|
||||||
|
Shape2: TShape;
|
||||||
|
AppNameLabel: TLabel;
|
||||||
|
Label1: TLabel;
|
||||||
|
VersionLabel: TLabel;
|
||||||
|
Image1: TImage;
|
||||||
|
Button1: TButton;
|
||||||
|
Memo1: TMemo;
|
||||||
|
private
|
||||||
|
{ Private declarations }
|
||||||
|
public
|
||||||
|
{ Public declarations }
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
AboutDialog: TAboutDialog;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{$R *.dfm}
|
||||||
|
|
||||||
|
end.
|
Binary file not shown.
|
@ -0,0 +1,160 @@
|
||||||
|
//******************************************************************************
|
||||||
|
//GoldMap
|
||||||
|
//by BlueSonic (aka Jigglypuff)
|
||||||
|
//******************************************************************************
|
||||||
|
unit BlockEditor;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
SysUtils, Controls, Classes, Forms, StdCtrls, ExtCtrls, Graphics;
|
||||||
|
|
||||||
|
type
|
||||||
|
TBlockEditorForm = class(TForm)
|
||||||
|
ScrollBox1: TScrollBox;
|
||||||
|
TileLabel: TLabel;
|
||||||
|
BlockLabel: TLabel;
|
||||||
|
UpdateButton: TButton;
|
||||||
|
AddressLabel: TLabel;
|
||||||
|
BlockEditBox: TImage;
|
||||||
|
BlockBox: TPaintBox;
|
||||||
|
TilePalette: TImage;
|
||||||
|
procedure FormCreate(Sender: TObject);
|
||||||
|
procedure BlockBoxMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
|
||||||
|
procedure BlockBoxMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
|
||||||
|
procedure LoadTile;
|
||||||
|
procedure SaveTile;
|
||||||
|
procedure UpdateTile;
|
||||||
|
procedure TilePaletteMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
||||||
|
procedure TilePaletteMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||||
|
procedure BlockEditBoxMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||||
|
procedure UpdateButtonClick(Sender: TObject);
|
||||||
|
procedure BlockBoxPaint(Sender: TObject);
|
||||||
|
procedure BlockEditBoxMouseMove(Sender: TObject; Shift: TShiftState; X,
|
||||||
|
Y: Integer);
|
||||||
|
public
|
||||||
|
BlockStart,SelTile,TileNumber : Integer;
|
||||||
|
BlockData: array [0..15] of Byte;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses MapEditor;
|
||||||
|
|
||||||
|
{$R *.DFM}
|
||||||
|
|
||||||
|
procedure TBlockeditorForm.LoadTile;
|
||||||
|
begin
|
||||||
|
Rom.Position := BlockStart;
|
||||||
|
//loads block
|
||||||
|
Rom.Read(BlockData, SizeOf(BlockData));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBlockeditorForm.SaveTile;
|
||||||
|
begin
|
||||||
|
Rom.Position := BlockStart;
|
||||||
|
//Saves block
|
||||||
|
Rom.Write(BlockData, SizeOf(BlockData));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBlockeditorForm.UpdateTile;
|
||||||
|
var
|
||||||
|
X,Y,I: Integer;
|
||||||
|
TileX, TileY, TileNumber: Byte;
|
||||||
|
begin
|
||||||
|
I := 0;
|
||||||
|
//draws tiles into block
|
||||||
|
for Y := 0 to 3 do
|
||||||
|
for X := 0 to 3 do
|
||||||
|
begin
|
||||||
|
TileNumber := BlockData[I];
|
||||||
|
//calculate x and y coordinate where to copy tile from, the tileset picture has 16 tiles per line
|
||||||
|
TileY := TileNumber div 16;
|
||||||
|
TileX := TileNumber mod 16;
|
||||||
|
//draw tile to block picture
|
||||||
|
BlockEditBox.Picture.Bitmap.Canvas.CopyRect(Rect(X*8,Y*8,X*8+8,Y*8+8),Tiles.Canvas,Rect(TileX*8,TileY*8,TileX*8+8,TileY*8+8));
|
||||||
|
Inc(I);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBlockEditorForm.FormCreate(Sender: TObject);
|
||||||
|
begin
|
||||||
|
//create block bitmap
|
||||||
|
BlockEditBox.Picture.Bitmap := TBitmap.Create;
|
||||||
|
BlockEditBox.Picture.Bitmap.Height := 32;
|
||||||
|
BlockEditBox.Picture.Bitmap.Width := 32;
|
||||||
|
BlockEditBox.Picture.Bitmap.PixelFormat := pf24bit;
|
||||||
|
//initalize other stuff
|
||||||
|
//BlockBox.Picture.Bitmap := MainForm.BlockPalette.Picture.Bitmap;
|
||||||
|
BlockBox.Height := MapEditorForm.BlockPalette.Height;
|
||||||
|
TilePalette.Picture.Graphic := Tiles;
|
||||||
|
//TilePalette.Height := Tiles.Height;
|
||||||
|
Caption := 'Block Editor - Tileset ' + IntToStr(LoadedTileset);
|
||||||
|
BlockStart := TilesetStart;
|
||||||
|
LoadTile;
|
||||||
|
UpdateTile;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBlockEditorForm.BlockBoxMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
||||||
|
begin
|
||||||
|
BlockLabel.Caption := 'Block: $' + IntToHex(Y div 32, 2);
|
||||||
|
AddressLabel.Caption := 'Offset: $' + IntToHex(TilesetStart + ((Y div 32) * 16), 2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBlockEditorForm.BlockBoxMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||||
|
begin
|
||||||
|
BlockStart := TilesetStart + ((Y div 32) * 16);
|
||||||
|
TileNumber := Y div 32;
|
||||||
|
LoadTile;
|
||||||
|
UpdateTile;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBlockEditorForm.TilePaletteMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
||||||
|
begin
|
||||||
|
TileLabel.Caption := 'Tile: $' + IntToHex((X div 8) + ((Y div 8) * 8), 2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBlockEditorForm.TilePaletteMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||||
|
begin
|
||||||
|
//gets tile where cursor is
|
||||||
|
SelPic := (X div 8) + ((Y div 8) * 8);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBlockEditorForm.BlockEditBoxMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||||
|
begin
|
||||||
|
if Button = mbLeft then
|
||||||
|
begin
|
||||||
|
//puts selected tile into block
|
||||||
|
BlockData[(X div 8) + ((Y div 8) * 4)] := SelPic;
|
||||||
|
UpdateTile;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
SelPic := BlockData[(X div 8) + ((Y div 8) * 4)];
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBlockEditorForm.UpdateButtonClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
SaveTile;
|
||||||
|
//draws edited tile into tileset
|
||||||
|
BlockPics[TileNumber].Canvas.Draw(0, 0, BlockEditBox.Picture.Bitmap);
|
||||||
|
//update block palette
|
||||||
|
MapEditorForm.DrawBlocks(MapEditorForm.BlockPalette.Canvas);
|
||||||
|
MapEditorForm.DrawBlocks(BlockBox.Canvas);
|
||||||
|
MapEditorForm.DrawMap(MapEditorForm.MapBox.Canvas);
|
||||||
|
RomModified := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBlockEditorForm.BlockBoxPaint(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MapEditorForm.DrawBlocks(BlockBox.Canvas);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBlockEditorForm.BlockEditBoxMouseMove(Sender: TObject;
|
||||||
|
Shift: TShiftState; X, Y: Integer);
|
||||||
|
begin
|
||||||
|
TileLabel.Caption := 'Tile: $' + IntToHex(BlockData[(X div 8) + ((Y div 8) * 4)], 2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
|
@ -0,0 +1,128 @@
|
||||||
|
unit Map;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses ComCtrls,SysUtils,Dialogs,Classes;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
TConnectionData = packed record
|
||||||
|
MapNumber: Byte;
|
||||||
|
MapDataPointer: Word;
|
||||||
|
MapLocationRamPointer: Word;
|
||||||
|
WidthHeightVisiblePart: Byte;
|
||||||
|
YChangePoint: Byte;
|
||||||
|
XChangePoint: Byte;
|
||||||
|
Unknown: Byte;
|
||||||
|
UnknownPointer: Word;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//Header 1
|
||||||
|
TMapHeader = packed record
|
||||||
|
TilesetNumber: Byte;
|
||||||
|
Height: Byte;
|
||||||
|
Width: Byte;
|
||||||
|
DataPointer: Word;
|
||||||
|
ObjectScriptPointers: Word;
|
||||||
|
LevelScriptPointer: Word;
|
||||||
|
ConnectionDataControl: Byte;
|
||||||
|
ConnectionData: array [$00..$03] of TConnectionData;
|
||||||
|
ObjectDataPointer: Word;
|
||||||
|
BorderBlock: Byte;
|
||||||
|
end;
|
||||||
|
|
||||||
|
const
|
||||||
|
Ln = #13#10;
|
||||||
|
|
||||||
|
//table needed for encoding area names
|
||||||
|
Table: array [$00..$FF] of string[4] = (
|
||||||
|
{ 0 1 2 3 4 5 6 7 8 9 A B C D E F }
|
||||||
|
{0}'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,
|
||||||
|
{1}'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,' ' ,
|
||||||
|
{2}'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,
|
||||||
|
{3}'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,
|
||||||
|
{4}'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,Ln ,
|
||||||
|
{5}'#' ,Ln+Ln ,'HIRO','GARY','POKé',Ln ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,
|
||||||
|
{6}'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,
|
||||||
|
{7}'#' ,'#' ,'#' ,'#' ,'#' ,'…' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,' ' ,
|
||||||
|
{8}'A' ,'B' ,'C' ,'D' ,'E' ,'F' ,'G' ,'H' ,'I' ,'J' ,'K' ,'L' ,'M' ,'N' ,'O' ,'P' ,
|
||||||
|
{9}'Q' ,'R' ,'S' ,'T' ,'U' ,'V' ,'W' ,'X' ,'Y' ,'Z' ,'#' ,'#' ,':' ,'#' ,'#' ,'#' ,
|
||||||
|
{A}'a' ,'b' ,'c' ,'d' ,'e' ,'f' ,'g' ,'h' ,'i' ,'j' ,'k' ,'l' ,'m' ,'n' ,'o' ,'p' ,
|
||||||
|
{B}'q' ,'r' ,'s' ,'t' ,'u' ,'v' ,'w' ,'x' ,'y' ,'z' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,
|
||||||
|
{C}'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,
|
||||||
|
{D}'#' ,'''l' ,'''m' ,'''r' ,'''s' ,'''t' ,'''v' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,
|
||||||
|
{E}'''' ,'#' ,'#' ,'-' ,'#' ,'#' ,'?' ,'!' ,'.' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,'#' ,
|
||||||
|
{F}'#' ,' ' ,'#' ,'#' ,',' ,'#' ,'0' ,'1' ,'2' ,'3' ,'4' ,'5' ,'6' ,'7' ,'8' ,'9'
|
||||||
|
);
|
||||||
|
|
||||||
|
function GBPtrToFilePos(Bank: Byte; Addr: Word): Integer; overload;
|
||||||
|
function GBBank(Position: Integer): Byte;
|
||||||
|
procedure ReadMapHeaderLocations;
|
||||||
|
function GetMapHeader(MapIndex: Byte): TMapHeader;
|
||||||
|
|
||||||
|
var
|
||||||
|
AreaNames: TStringList;
|
||||||
|
BankLocations: array [$00..$F9] of Byte;
|
||||||
|
MapHeaderOffsets: array [$00..$F9] of Word;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses MapEditor;
|
||||||
|
|
||||||
|
//converts rombank and, address in that bank, into romfile offset
|
||||||
|
function GBPtrToFilePos(Bank: Byte; Addr: Word): Integer; overload;
|
||||||
|
begin
|
||||||
|
Result := (Bank * $4000) + (Addr xor $4000);
|
||||||
|
end;
|
||||||
|
|
||||||
|
//gives gameboy rombank number ar specified file offset
|
||||||
|
function GBBank(Position: Integer): Byte;
|
||||||
|
begin
|
||||||
|
Result := (Position div $4000);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMapHeaderLocations;
|
||||||
|
begin
|
||||||
|
Rom.Position := $C23D;
|
||||||
|
Rom.Read(BankLocations, $F9);
|
||||||
|
Rom.Position := $01AE;
|
||||||
|
Rom.Read(MapHeaderOffsets, $F9 * sizeof(Word));
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GetMapHeader(MapIndex: Byte): TMapHeader;
|
||||||
|
var
|
||||||
|
TempHeader: TMapHeader;
|
||||||
|
begin
|
||||||
|
Rom.Position := GBPtrToFilePos(BankLocations[MapIndex], MapHeaderOffsets[MapIndex]);
|
||||||
|
|
||||||
|
Rom.Read(TempHeader.TilesetNumber, 1);
|
||||||
|
Rom.Read(TempHeader.Height, 1);
|
||||||
|
Rom.Read(TempHeader.Width, 1);
|
||||||
|
Rom.Read(TempHeader.DataPointer, 2);
|
||||||
|
Rom.Read(TempHeader.ObjectScriptPointers, 2);
|
||||||
|
Rom.Read(TempHeader.LevelScriptPointer, 2);
|
||||||
|
Rom.Read(TempHeader.ConnectionDataControl, 1);
|
||||||
|
|
||||||
|
if (TempHeader.ConnectionDataControl and $08) = $08 then
|
||||||
|
Rom.Read(TempHeader.ConnectionData[0], SizeOf(TConnectionData));
|
||||||
|
|
||||||
|
if (TempHeader.ConnectionDataControl and $04) = $04 then
|
||||||
|
Rom.Read(TempHeader.ConnectionData[1], SizeOf(TConnectionData));
|
||||||
|
|
||||||
|
if (TempHeader.ConnectionDataControl and $02) = $02 then
|
||||||
|
Rom.Read(TempHeader.ConnectionData[2], SizeOf(TConnectionData));
|
||||||
|
|
||||||
|
if (TempHeader.ConnectionDataControl and $01) = $01 then
|
||||||
|
Rom.Read(TempHeader.ConnectionData[3], SizeOf(TConnectionData));
|
||||||
|
|
||||||
|
Rom.Read(TempHeader.ObjectDataPointer, 2);
|
||||||
|
|
||||||
|
Rom.Position := GBPtrToFilePos(BankLocations[MapIndex],
|
||||||
|
TempHeader.ObjectDataPointer);
|
||||||
|
|
||||||
|
Rom.Read(TempHeader.BorderBlock, 1);
|
||||||
|
|
||||||
|
Result := TempHeader;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,30 @@
|
||||||
|
unit Misc;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses Windows, Sysutils;
|
||||||
|
|
||||||
|
procedure DebugString(aCaption, aText: string);
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
// GetFormatDT - Output = formated DateTime String
|
||||||
|
function GetFormatDT(aDateTime: TDateTime): string;
|
||||||
|
begin
|
||||||
|
Result := FormatDateTime('dd.mm.yy hh:nn:ss zzz', aDateTime);
|
||||||
|
end;
|
||||||
|
|
||||||
|
// GetFormatT - Output = formated Time String
|
||||||
|
function GetFormatT(aDateTime: TDateTime): string;
|
||||||
|
begin
|
||||||
|
Result := FormatDateTime('hh:nn:ss zzz', aDateTime)
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure DebugString(aCaption, aText: string);
|
||||||
|
begin
|
||||||
|
OutputDebugString(PChar(Format('[%s][%s] %s',
|
||||||
|
[aCaption, GetFormatDT(Now()),
|
||||||
|
aText])));
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,170 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<BorlandProject>
|
||||||
|
<PersonalityInfo>
|
||||||
|
<Option>
|
||||||
|
<Option Name="Personality">Delphi.Personality</Option>
|
||||||
|
<Option Name="ProjectType"></Option>
|
||||||
|
<Option Name="Version">1.0</Option>
|
||||||
|
<Option Name="GUID">{4AE37C7A-D69B-4E9A-8BBD-0A473BE787FC}</Option>
|
||||||
|
</Option>
|
||||||
|
</PersonalityInfo>
|
||||||
|
<Delphi.Personality>
|
||||||
|
<Source>
|
||||||
|
<Source Name="MainSource">RedMap.dpr</Source>
|
||||||
|
</Source>
|
||||||
|
<FileVersion>
|
||||||
|
<FileVersion Name="Version">7.0</FileVersion>
|
||||||
|
</FileVersion>
|
||||||
|
<Compiler>
|
||||||
|
<Compiler Name="A">8</Compiler>
|
||||||
|
<Compiler Name="B">0</Compiler>
|
||||||
|
<Compiler Name="C">1</Compiler>
|
||||||
|
<Compiler Name="D">1</Compiler>
|
||||||
|
<Compiler Name="E">0</Compiler>
|
||||||
|
<Compiler Name="F">0</Compiler>
|
||||||
|
<Compiler Name="G">1</Compiler>
|
||||||
|
<Compiler Name="H">1</Compiler>
|
||||||
|
<Compiler Name="I">1</Compiler>
|
||||||
|
<Compiler Name="J">0</Compiler>
|
||||||
|
<Compiler Name="K">0</Compiler>
|
||||||
|
<Compiler Name="L">1</Compiler>
|
||||||
|
<Compiler Name="M">0</Compiler>
|
||||||
|
<Compiler Name="N">1</Compiler>
|
||||||
|
<Compiler Name="O">1</Compiler>
|
||||||
|
<Compiler Name="P">1</Compiler>
|
||||||
|
<Compiler Name="Q">0</Compiler>
|
||||||
|
<Compiler Name="R">0</Compiler>
|
||||||
|
<Compiler Name="S">0</Compiler>
|
||||||
|
<Compiler Name="T">0</Compiler>
|
||||||
|
<Compiler Name="U">0</Compiler>
|
||||||
|
<Compiler Name="V">1</Compiler>
|
||||||
|
<Compiler Name="W">0</Compiler>
|
||||||
|
<Compiler Name="X">1</Compiler>
|
||||||
|
<Compiler Name="Y">1</Compiler>
|
||||||
|
<Compiler Name="Z">1</Compiler>
|
||||||
|
<Compiler Name="ShowHints">True</Compiler>
|
||||||
|
<Compiler Name="ShowWarnings">True</Compiler>
|
||||||
|
<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
|
||||||
|
<Compiler Name="NamespacePrefix"></Compiler>
|
||||||
|
<Compiler Name="GenerateDocumentation">False</Compiler>
|
||||||
|
<Compiler Name="DefaultNamespace"></Compiler>
|
||||||
|
<Compiler Name="SymbolDeprecated">True</Compiler>
|
||||||
|
<Compiler Name="SymbolLibrary">True</Compiler>
|
||||||
|
<Compiler Name="SymbolPlatform">True</Compiler>
|
||||||
|
<Compiler Name="SymbolExperimental">True</Compiler>
|
||||||
|
<Compiler Name="UnitLibrary">True</Compiler>
|
||||||
|
<Compiler Name="UnitPlatform">True</Compiler>
|
||||||
|
<Compiler Name="UnitDeprecated">True</Compiler>
|
||||||
|
<Compiler Name="UnitExperimental">True</Compiler>
|
||||||
|
<Compiler Name="HResultCompat">True</Compiler>
|
||||||
|
<Compiler Name="HidingMember">True</Compiler>
|
||||||
|
<Compiler Name="HiddenVirtual">True</Compiler>
|
||||||
|
<Compiler Name="Garbage">True</Compiler>
|
||||||
|
<Compiler Name="BoundsError">True</Compiler>
|
||||||
|
<Compiler Name="ZeroNilCompat">True</Compiler>
|
||||||
|
<Compiler Name="StringConstTruncated">True</Compiler>
|
||||||
|
<Compiler Name="ForLoopVarVarPar">True</Compiler>
|
||||||
|
<Compiler Name="TypedConstVarPar">True</Compiler>
|
||||||
|
<Compiler Name="AsgToTypedConst">True</Compiler>
|
||||||
|
<Compiler Name="CaseLabelRange">True</Compiler>
|
||||||
|
<Compiler Name="ForVariable">True</Compiler>
|
||||||
|
<Compiler Name="ConstructingAbstract">True</Compiler>
|
||||||
|
<Compiler Name="ComparisonFalse">True</Compiler>
|
||||||
|
<Compiler Name="ComparisonTrue">True</Compiler>
|
||||||
|
<Compiler Name="ComparingSignedUnsigned">True</Compiler>
|
||||||
|
<Compiler Name="CombiningSignedUnsigned">True</Compiler>
|
||||||
|
<Compiler Name="UnsupportedConstruct">True</Compiler>
|
||||||
|
<Compiler Name="FileOpen">True</Compiler>
|
||||||
|
<Compiler Name="FileOpenUnitSrc">True</Compiler>
|
||||||
|
<Compiler Name="BadGlobalSymbol">True</Compiler>
|
||||||
|
<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
|
||||||
|
<Compiler Name="InvalidDirective">True</Compiler>
|
||||||
|
<Compiler Name="PackageNoLink">True</Compiler>
|
||||||
|
<Compiler Name="PackageThreadVar">True</Compiler>
|
||||||
|
<Compiler Name="ImplicitImport">True</Compiler>
|
||||||
|
<Compiler Name="HPPEMITIgnored">True</Compiler>
|
||||||
|
<Compiler Name="NoRetVal">True</Compiler>
|
||||||
|
<Compiler Name="UseBeforeDef">True</Compiler>
|
||||||
|
<Compiler Name="ForLoopVarUndef">True</Compiler>
|
||||||
|
<Compiler Name="UnitNameMismatch">True</Compiler>
|
||||||
|
<Compiler Name="NoCFGFileFound">True</Compiler>
|
||||||
|
<Compiler Name="ImplicitVariants">True</Compiler>
|
||||||
|
<Compiler Name="UnicodeToLocale">True</Compiler>
|
||||||
|
<Compiler Name="LocaleToUnicode">True</Compiler>
|
||||||
|
<Compiler Name="ImagebaseMultiple">True</Compiler>
|
||||||
|
<Compiler Name="SuspiciousTypecast">True</Compiler>
|
||||||
|
<Compiler Name="PrivatePropAccessor">True</Compiler>
|
||||||
|
<Compiler Name="UnsafeType">False</Compiler>
|
||||||
|
<Compiler Name="UnsafeCode">False</Compiler>
|
||||||
|
<Compiler Name="UnsafeCast">False</Compiler>
|
||||||
|
<Compiler Name="OptionTruncated">True</Compiler>
|
||||||
|
<Compiler Name="WideCharReduced">True</Compiler>
|
||||||
|
<Compiler Name="DuplicatesIgnored">True</Compiler>
|
||||||
|
<Compiler Name="UnitInitSeq">True</Compiler>
|
||||||
|
<Compiler Name="LocalPInvoke">True</Compiler>
|
||||||
|
<Compiler Name="MessageDirective">True</Compiler>
|
||||||
|
<Compiler Name="CodePage"></Compiler>
|
||||||
|
</Compiler>
|
||||||
|
<Linker>
|
||||||
|
<Linker Name="MapFile">0</Linker>
|
||||||
|
<Linker Name="OutputObjs">0</Linker>
|
||||||
|
<Linker Name="GenerateHpps">False</Linker>
|
||||||
|
<Linker Name="ConsoleApp">1</Linker>
|
||||||
|
<Linker Name="DebugInfo">False</Linker>
|
||||||
|
<Linker Name="RemoteSymbols">False</Linker>
|
||||||
|
<Linker Name="GenerateDRC">False</Linker>
|
||||||
|
<Linker Name="MinStackSize">16384</Linker>
|
||||||
|
<Linker Name="MaxStackSize">1048576</Linker>
|
||||||
|
<Linker Name="ImageBase">4194304</Linker>
|
||||||
|
<Linker Name="ExeDescription"></Linker>
|
||||||
|
</Linker>
|
||||||
|
<Directories>
|
||||||
|
<Directories Name="OutputDir"></Directories>
|
||||||
|
<Directories Name="UnitOutputDir"></Directories>
|
||||||
|
<Directories Name="PackageDLLOutputDir"></Directories>
|
||||||
|
<Directories Name="PackageDCPOutputDir"></Directories>
|
||||||
|
<Directories Name="SearchPath"></Directories>
|
||||||
|
<Directories Name="Packages">vcl;rtl;vclx;dbrtl;vcldb;VclSmp;xmlrtl;vclie;inet;inetdbbde;inetdbxpress;PNGLib;madBasic_;madDisAsm_;madExcept_</Directories>
|
||||||
|
<Directories Name="Conditionals"></Directories>
|
||||||
|
<Directories Name="DebugSourceDirs"></Directories>
|
||||||
|
<Directories Name="UsePackages">False</Directories>
|
||||||
|
</Directories>
|
||||||
|
<Parameters>
|
||||||
|
<Parameters Name="RunParams"></Parameters>
|
||||||
|
<Parameters Name="HostApplication"></Parameters>
|
||||||
|
<Parameters Name="Launcher"></Parameters>
|
||||||
|
<Parameters Name="UseLauncher">False</Parameters>
|
||||||
|
<Parameters Name="DebugCWD"></Parameters>
|
||||||
|
<Parameters Name="Debug Symbols Search Path"></Parameters>
|
||||||
|
<Parameters Name="LoadAllSymbols">True</Parameters>
|
||||||
|
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
|
||||||
|
</Parameters>
|
||||||
|
<VersionInfo>
|
||||||
|
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||||
|
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||||
|
<VersionInfo Name="MajorVer">1</VersionInfo>
|
||||||
|
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||||
|
<VersionInfo Name="Release">0</VersionInfo>
|
||||||
|
<VersionInfo Name="Build">0</VersionInfo>
|
||||||
|
<VersionInfo Name="Debug">False</VersionInfo>
|
||||||
|
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||||
|
<VersionInfo Name="Special">False</VersionInfo>
|
||||||
|
<VersionInfo Name="Private">False</VersionInfo>
|
||||||
|
<VersionInfo Name="DLL">False</VersionInfo>
|
||||||
|
<VersionInfo Name="Locale">1033</VersionInfo>
|
||||||
|
<VersionInfo Name="CodePage">1252</VersionInfo>
|
||||||
|
</VersionInfo>
|
||||||
|
<VersionInfoKeys>
|
||||||
|
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
|
||||||
|
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
|
||||||
|
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
|
||||||
|
<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
|
||||||
|
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
|
||||||
|
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
|
||||||
|
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
|
||||||
|
<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
|
||||||
|
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
||||||
|
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
|
||||||
|
</VersionInfoKeys>
|
||||||
|
</Delphi.Personality>
|
||||||
|
</BorlandProject>
|
|
@ -0,0 +1,132 @@
|
||||||
|
[FileVersion]
|
||||||
|
Version=7.0
|
||||||
|
[Compiler]
|
||||||
|
A=8
|
||||||
|
B=0
|
||||||
|
C=1
|
||||||
|
D=1
|
||||||
|
E=0
|
||||||
|
F=0
|
||||||
|
G=1
|
||||||
|
H=1
|
||||||
|
I=1
|
||||||
|
J=0
|
||||||
|
K=0
|
||||||
|
L=1
|
||||||
|
M=0
|
||||||
|
N=1
|
||||||
|
O=1
|
||||||
|
P=1
|
||||||
|
Q=0
|
||||||
|
R=0
|
||||||
|
S=0
|
||||||
|
T=0
|
||||||
|
U=0
|
||||||
|
V=1
|
||||||
|
W=0
|
||||||
|
X=1
|
||||||
|
Y=1
|
||||||
|
Z=1
|
||||||
|
ShowHints=1
|
||||||
|
ShowWarnings=1
|
||||||
|
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||||
|
NamespacePrefix=
|
||||||
|
SymbolDeprecated=1
|
||||||
|
SymbolLibrary=1
|
||||||
|
SymbolPlatform=1
|
||||||
|
UnitLibrary=1
|
||||||
|
UnitPlatform=1
|
||||||
|
UnitDeprecated=1
|
||||||
|
HResultCompat=1
|
||||||
|
HidingMember=1
|
||||||
|
HiddenVirtual=1
|
||||||
|
Garbage=1
|
||||||
|
BoundsError=1
|
||||||
|
ZeroNilCompat=1
|
||||||
|
StringConstTruncated=1
|
||||||
|
ForLoopVarVarPar=1
|
||||||
|
TypedConstVarPar=1
|
||||||
|
AsgToTypedConst=1
|
||||||
|
CaseLabelRange=1
|
||||||
|
ForVariable=1
|
||||||
|
ConstructingAbstract=1
|
||||||
|
ComparisonFalse=1
|
||||||
|
ComparisonTrue=1
|
||||||
|
ComparingSignedUnsigned=1
|
||||||
|
CombiningSignedUnsigned=1
|
||||||
|
UnsupportedConstruct=1
|
||||||
|
FileOpen=1
|
||||||
|
FileOpenUnitSrc=1
|
||||||
|
BadGlobalSymbol=1
|
||||||
|
DuplicateConstructorDestructor=1
|
||||||
|
InvalidDirective=1
|
||||||
|
PackageNoLink=1
|
||||||
|
PackageThreadVar=1
|
||||||
|
ImplicitImport=1
|
||||||
|
HPPEMITIgnored=1
|
||||||
|
NoRetVal=1
|
||||||
|
UseBeforeDef=1
|
||||||
|
ForLoopVarUndef=1
|
||||||
|
UnitNameMismatch=1
|
||||||
|
NoCFGFileFound=1
|
||||||
|
MessageDirective=1
|
||||||
|
ImplicitVariants=1
|
||||||
|
UnicodeToLocale=1
|
||||||
|
LocaleToUnicode=1
|
||||||
|
ImagebaseMultiple=1
|
||||||
|
SuspiciousTypecast=1
|
||||||
|
PrivatePropAccessor=1
|
||||||
|
UnsafeType=0
|
||||||
|
UnsafeCode=0
|
||||||
|
UnsafeCast=0
|
||||||
|
[Linker]
|
||||||
|
MapFile=0
|
||||||
|
OutputObjs=0
|
||||||
|
ConsoleApp=1
|
||||||
|
DebugInfo=0
|
||||||
|
RemoteSymbols=0
|
||||||
|
MinStackSize=16384
|
||||||
|
MaxStackSize=1048576
|
||||||
|
ImageBase=4194304
|
||||||
|
ExeDescription=
|
||||||
|
[Directories]
|
||||||
|
OutputDir=
|
||||||
|
UnitOutputDir=
|
||||||
|
PackageDLLOutputDir=
|
||||||
|
PackageDCPOutputDir=
|
||||||
|
SearchPath=
|
||||||
|
Packages=
|
||||||
|
Conditionals=
|
||||||
|
DebugSourceDirs=
|
||||||
|
UsePackages=0
|
||||||
|
[Parameters]
|
||||||
|
RunParams=
|
||||||
|
HostApplication=
|
||||||
|
Launcher=
|
||||||
|
UseLauncher=0
|
||||||
|
DebugCWD=
|
||||||
|
[Version Info]
|
||||||
|
IncludeVerInfo=0
|
||||||
|
AutoIncBuild=0
|
||||||
|
MajorVer=1
|
||||||
|
MinorVer=0
|
||||||
|
Release=0
|
||||||
|
Build=0
|
||||||
|
Debug=0
|
||||||
|
PreRelease=0
|
||||||
|
Special=0
|
||||||
|
Private=0
|
||||||
|
DLL=0
|
||||||
|
Locale=1033
|
||||||
|
CodePage=1252
|
||||||
|
[Version Info Keys]
|
||||||
|
CompanyName=
|
||||||
|
FileDescription=
|
||||||
|
FileVersion=1.0.0.0
|
||||||
|
InternalName=
|
||||||
|
LegalCopyright=
|
||||||
|
LegalTrademarks=
|
||||||
|
OriginalFilename=
|
||||||
|
ProductName=
|
||||||
|
ProductVersion=1.0.0.0
|
||||||
|
Comments=
|
|
@ -0,0 +1,20 @@
|
||||||
|
program RedMap;
|
||||||
|
|
||||||
|
uses
|
||||||
|
Forms,
|
||||||
|
MapEditor in 'MapEditor.pas' {MapEditorForm},
|
||||||
|
Tileset in 'Tileset.pas',
|
||||||
|
Map in 'Map.pas',
|
||||||
|
About in 'About.pas' {AboutDialog},
|
||||||
|
Misc in 'Misc.pas',
|
||||||
|
BlockEditor in 'BlockEditor.pas' {BlockEditorForm};
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
|
||||||
|
begin
|
||||||
|
Application.Initialize;
|
||||||
|
Application.Title := 'RedMap';
|
||||||
|
Application.CreateForm(TMapEditorForm, MapEditorForm);
|
||||||
|
Application.CreateForm(TAboutDialog, AboutDialog);
|
||||||
|
Application.Run;
|
||||||
|
end.
|
Binary file not shown.
|
@ -0,0 +1,93 @@
|
||||||
|
unit Tileset;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses Map, Classes, Dialogs, SysUtils, Graphics;
|
||||||
|
|
||||||
|
type
|
||||||
|
TTilesetHeader = packed record
|
||||||
|
BankNumber: Byte;
|
||||||
|
TilesetArrangementPointer: Word;
|
||||||
|
TilesetGraphicsPointer: Word;
|
||||||
|
UnknownData: array [0..6] of Byte;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
//Palette: array [0..3] of TColor = (clWhite,clLtGray,clDkGray,clBlack);
|
||||||
|
//Palette: array [0..3] of TColor = ($F8E8F8, $A8E058, $A0D0F8, $181010);
|
||||||
|
Palette: array [0..3] of TColor = ($F8E8F8, $58E0A8, $F8D0A0, $101018);
|
||||||
|
RawMapPalettes: array [0..12, 0..3] of Word;
|
||||||
|
|
||||||
|
const Zero: Byte = 0;
|
||||||
|
|
||||||
|
function GetTilesetHeader(TilesetNumber: Byte): TTilesetHeader;
|
||||||
|
function WordToColor(Value: Word): TColor;
|
||||||
|
procedure ReadTilesetGraphics(TilesetHeader: TTilesetHeader; Bmp: TBitmap);
|
||||||
|
procedure ReadMapPallets;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses MapEditor;
|
||||||
|
|
||||||
|
function GetTilesetHeader(TilesetNumber: Byte): TTilesetHeader;
|
||||||
|
begin
|
||||||
|
Rom.Position := $C7BE + ((TilesetNumber) * SizeOf(TTilesetHeader));
|
||||||
|
Rom.Read(Result, SizeOf(TTilesetHeader));
|
||||||
|
end;
|
||||||
|
|
||||||
|
function WordToColor(Value: Word): TColor;
|
||||||
|
var
|
||||||
|
R,G,B: Byte;
|
||||||
|
begin
|
||||||
|
R := Round((((Value shr 00) and 31) / 31) * 255);
|
||||||
|
G := Round((((Value shr 05) and 31) / 31) * 255);
|
||||||
|
B := Round((((Value shr 10) and 31) / 31) * 255);
|
||||||
|
Result := R or (G shl 8) or (B shl 16);
|
||||||
|
end;
|
||||||
|
|
||||||
|
//reads tile from Stream into Bmp and uses colors from Pal
|
||||||
|
procedure ReadTile(Stream: TStream; Bmp: TBitmap);
|
||||||
|
var
|
||||||
|
X,Y: Integer;
|
||||||
|
Data1,Data2: Byte;
|
||||||
|
begin
|
||||||
|
for Y := 0 to 7 do
|
||||||
|
begin
|
||||||
|
Stream.Read(Data1,1);
|
||||||
|
Stream.Read(Data2,1);
|
||||||
|
for X := 0 to 7 do
|
||||||
|
Bmp.Canvas.Pixels[X,Y] := Palette[((Data1 shr (7-X)) and 1) or (((Data2 shr (7-X)) and 1) shl 1)];
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//reads tileset at specific address into Bmp
|
||||||
|
procedure ReadTilesetGraphics(TilesetHeader: TTilesetHeader; Bmp: TBitmap);
|
||||||
|
var
|
||||||
|
Tile: TBitmap;
|
||||||
|
TileCnt: Byte;
|
||||||
|
I: Integer;
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
Tile := TBitmap.Create;
|
||||||
|
Tile.PixelFormat := pf24bit;
|
||||||
|
Tile.Width := 8;
|
||||||
|
Tile.Height := 8;
|
||||||
|
Rom.Position := GBPtrToFilePos(TilesetHeader.BankNumber, TilesetHeader.TilesetGraphicsPointer);
|
||||||
|
TileCnt := 0;
|
||||||
|
for I := 1 to 16 * 6 do
|
||||||
|
begin
|
||||||
|
ReadTile(Rom,Tile);
|
||||||
|
Bmp.Canvas.Draw((TileCnt mod 16) * 8, (TileCnt div 16) * 8, Tile);
|
||||||
|
Inc(TileCnt);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadMapPallets;
|
||||||
|
begin
|
||||||
|
Rom.Position := $72660;
|
||||||
|
Rom.Read(RawMapPalettes, 8*12);
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
Loading…
Reference in New Issue