0 Members and 1 Guest are viewing this topic.
Hmm, ok it seems that that "o" is one the couple BBxx tokens I didn't add... sorry I misspoke. the "a" is definitely added there as an "a" tho, I don't know why it would be showing "n" (the letters in quotes are the special symbols im to lazy to find to copypasta )@LordConiupiter Sure, but that code might not really work too well (be easy to work with), If you want, I could wrap it into an easy function that you can just copy in if you want...
HoMM: [==--------] Project 'resumed': I'm suffering overwhelming new ideas being popped up in my dreams :PtiDE: [----------] Explored and understood the main part of the code: just started writing a Tokenizer.
Public Function GenerateFile(ByVal File_Bytes() As Byte, ByVal File_Name As String, ByVal File_Comment As String) Dim FileBytes(1048576) As Byte Dim FileBytesCounter1 As Integer = File_Bytes.Length Dim FileComment = File_Comment Dim FileName = File_Name '**TI83F* FileBytes(0) = 42 FileBytes(1) = 42 FileBytes(2) = 84 FileBytes(3) = 73 FileBytes(4) = 56 FileBytes(5) = 51 FileBytes(6) = 70 FileBytes(7) = 42 '1A,0A,00 FileBytes(8) = 26 FileBytes(9) = 10 FileBytes(10) = 0 'Comment FileComment = FileComment.PadRight(42, ChrW(0)) For x As Integer = 0 To 41 FileBytes(x + 11) = AscW(FileComment.Chars(x)) Next 'Data Size If FileBytesCounter1 + 19 > 255 Then Dim TempHex = cHex(FileBytesCounter1 + 19, 4) FileBytes(54) = cInteger(Mid(TempHex, 1, 2)) FileBytes(53) = cInteger(Mid(TempHex, 3, 2)) Else FileBytes(54) = 0 FileBytes(53) = FileBytesCounter1 + 19 End If 'Random Flag (either B or D) FileBytes(55) = 13 FileBytes(56) = 0 'Variable Size If FileBytesCounter1 + 2 > 255 Then Dim TempHex = cHex(FileBytesCounter1 + 2, 4) FileBytes(58) = cInteger(Mid(TempHex, 1, 2)) FileBytes(57) = cInteger(Mid(TempHex, 3, 2)) Else FileBytes(58) = 0 FileBytes(57) = FileBytesCounter1 + 2 End If 'Type ID FileBytes(59) = 5 'Name FileName = FileName.PadRight(8, ChrW(0)) For x As Integer = 0 To 7 FileBytes(60 + x) = AscW(FileName.Chars(x)) Next 'Version FileBytes(68) = 0 'Archived FileBytes(69) = 0 'Variable Size Again If FileBytesCounter1 + 2 > 255 Then Dim TempHex = cHex(FileBytesCounter1 + 2, 4) FileBytes(71) = cInteger(Mid(TempHex, 1, 2)) FileBytes(70) = cInteger(Mid(TempHex, 3, 2)) Else FileBytes(71) = 0 FileBytes(70) = FileBytesCounter1 + 2 End If 'Total Token Count If FileBytesCounter1 > 255 Then Dim TempHex = cHex(FileBytesCounter1, 4) FileBytes(73) = cInteger(Mid(TempHex, 1, 2)) FileBytes(72) = cInteger(Mid(TempHex, 3, 2)) Else FileBytes(73) = 0 FileBytes(72) = FileBytesCounter1 End If 'Totals data Dim Counter = 0 For x As Integer = 0 To FileBytesCounter1 + 19 Counter += FileBytes(x + 55) Next 'Lower 16 bits of data totalled together If Hex(Counter).Length > 4 Then Counter = cInteger(Mid(cHex(Counter, 4), 1, 4)) If Counter > 255 Then FileBytes(FileBytesCounter1 + 75) = cInteger(Mid(cHex(Counter, 4), 1, 2)) FileBytes(FileBytesCounter1 + 74) = cInteger(Mid(cHex(Counter, 4), 3, 2)) Else FileBytes(FileBytesCounter1 + 75) = 0 FileBytes(FileBytesCounter1 + 74) = Counter End If Dim FinalBytes(FileBytesCounter1 + 75) As Byte For x As Integer = 0 To FileBytesCounter1 + 75 FinalBytes(x) = FileBytes(x) Next Return FinalBytes End Function Shared Function cHex(ByVal IntValue As Integer, ByVal Length As Integer) As String Dim Int_Length As Integer = Int(Math.Log10(IntValue) / Math.Log10(16)) + 1 Dim Temp_Value As Integer Dim Hex_String As String = "" For X As Integer = Length - 1 To 0 Step -1 Temp_Value = Int(IntValue / (16 ^ X)) Hex_String += Mid("0123456789ABCDEF", Temp_Value + 1, 1) IntValue -= Temp_Value * (16 ^ X) Next Return Hex_String End Function Shared Function cInteger(ByVal HexString As String) As Integer Dim Int_Value As Integer For X As Integer = HexString.Length To 1 Step -1 Int_Value += (InStr("0123456789ABCDEF", Mid(HexString, X, 1)) - 1) * (16 ^ (HexString.Length - X)) Next Return Int_Value End Function
...Yes, I still need to fix the single if highlighting in regular programs...
Oh ok I wasn't too sure since a Repeat was involved in the code. But yeah check in the code where it says "If The Game". I never actually wrote that code. It appears in your editor for some reasons. Invalid/unrecognized token?
Spoiler For Not too much trouble ;D: Code: [Select] Public Function GenerateFile(ByVal File_Bytes() As Byte, ByVal File_Name As String, ByVal File_Comment As String) Dim FileBytes(1048576) As Byte Dim FileBytesCounter1 As Integer = File_Bytes.Length Dim FileComment = File_Comment Dim FileName = File_Name '**TI83F* FileBytes(0) = 42 FileBytes(1) = 42 FileBytes(2) = 84 FileBytes(3) = 73 FileBytes(4) = 56 FileBytes(5) = 51 FileBytes(6) = 70 FileBytes(7) = 42 '1A,0A,00 FileBytes(8) = 26 FileBytes(9) = 10 FileBytes(10) = 0 'Comment FileComment = FileComment.PadRight(42, ChrW(0)) For x As Integer = 0 To 41 FileBytes(x + 11) = AscW(FileComment.Chars(x)) Next 'Data Size If FileBytesCounter1 + 19 > 255 Then Dim TempHex = cHex(FileBytesCounter1 + 19, 4) FileBytes(54) = cInteger(Mid(TempHex, 1, 2)) FileBytes(53) = cInteger(Mid(TempHex, 3, 2)) Else FileBytes(54) = 0 FileBytes(53) = FileBytesCounter1 + 19 End If 'Random Flag (either B or D) FileBytes(55) = 13 FileBytes(56) = 0 'Variable Size If FileBytesCounter1 + 2 > 255 Then Dim TempHex = cHex(FileBytesCounter1 + 2, 4) FileBytes(58) = cInteger(Mid(TempHex, 1, 2)) FileBytes(57) = cInteger(Mid(TempHex, 3, 2)) Else FileBytes(58) = 0 FileBytes(57) = FileBytesCounter1 + 2 End If 'Type ID FileBytes(59) = 5 'Name FileName = FileName.PadRight(8, ChrW(0)) For x As Integer = 0 To 7 FileBytes(60 + x) = AscW(FileName.Chars(x)) Next 'Version FileBytes(68) = 0 'Archived FileBytes(69) = 0 'Variable Size Again If FileBytesCounter1 + 2 > 255 Then Dim TempHex = cHex(FileBytesCounter1 + 2, 4) FileBytes(71) = cInteger(Mid(TempHex, 1, 2)) FileBytes(70) = cInteger(Mid(TempHex, 3, 2)) Else FileBytes(71) = 0 FileBytes(70) = FileBytesCounter1 + 2 End If 'Total Token Count If FileBytesCounter1 > 255 Then Dim TempHex = cHex(FileBytesCounter1, 4) FileBytes(73) = cInteger(Mid(TempHex, 1, 2)) FileBytes(72) = cInteger(Mid(TempHex, 3, 2)) Else FileBytes(73) = 0 FileBytes(72) = FileBytesCounter1 End If 'Totals data Dim Counter = 0 For x As Integer = 0 To FileBytesCounter1 + 19 Counter += FileBytes(x + 55) Next 'Lower 16 bits of data totalled together If Hex(Counter).Length > 4 Then Counter = cInteger(Mid(cHex(Counter, 4), 1, 4)) If Counter > 255 Then FileBytes(FileBytesCounter1 + 75) = cInteger(Mid(cHex(Counter, 4), 1, 2)) FileBytes(FileBytesCounter1 + 74) = cInteger(Mid(cHex(Counter, 4), 3, 2)) Else FileBytes(FileBytesCounter1 + 75) = 0 FileBytes(FileBytesCounter1 + 74) = Counter End If Dim FinalBytes(FileBytesCounter1 + 75) As Byte For x As Integer = 0 To FileBytesCounter1 + 75 FinalBytes(x) = FileBytes(x) Next Return FinalBytes End Function Shared Function cHex(ByVal IntValue As Integer, ByVal Length As Integer) As String Dim Int_Length As Integer = Int(Math.Log10(IntValue) / Math.Log10(16)) + 1 Dim Temp_Value As Integer Dim Hex_String As String = "" For X As Integer = Length - 1 To 0 Step -1 Temp_Value = Int(IntValue / (16 ^ X)) Hex_String += Mid("0123456789ABCDEF", Temp_Value + 1, 1) IntValue -= Temp_Value * (16 ^ X) Next Return Hex_String End Function Shared Function cInteger(ByVal HexString As String) As Integer Dim Int_Value As Integer For X As Integer = HexString.Length To 1 Step -1 Int_Value += (InStr("0123456789ABCDEF", Mid(HexString, X, 1)) - 1) * (16 ^ (HexString.Length - X)) Next Return Int_Value End FunctionIt takes an array of bytes which consists of the data you want put into the program, a string which is the eight or less on calc program name, and a string which is a... (either 40 or 42 i can't remember) or less file comment, which is mostly pointless, but can be set anyways...