• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.

Thoover

Members
  • Content count

    199
  • Joined

  • Last visited

Community Reputation

134 Neutral

About Thoover

  • Rank
    Member
  1. Yep, http://forum.osdev.org/viewtopic.php?f=13&t=29536 - the third post by me is the same (or nearly) as the first post here.   Yes it returns the new value (if not way out of memory range - Bochs panics on Y position out of range)
  2. Well, I'll try it out soon, I'm stuck somewhere else for now, but IIRC I have tried memory offsets with the same result.   But again I'll test it out in a few days to a week once IPC is fully functioning.   Thanks for your replies, I'll post updates.     P.S. I have also been told that the issue may be in Bochs' VBE, so I'll try other "platforms" - lack of better term - including Physical HW
  3. GetDisplayStart returns CX = DX = 0 Also only the sub functions of Function 7 that were added in VBE 3.0 use memory locations, the older ones still use legacy values (If I understand the Spec sheet correctly) I don't know why I cannot copy out the PDF so I'll tell you its page labled 51 (59 in the PDF), second full paragraph - http://www.petesqbsite.com/sections/tutorials/tuts/vbe3.pdf
  4. I have no problem with LFB (in fact in all my systems it is purely flat) The problem comes only when trying to page flip, I can draw all day onto the screen perfectly.   In fact I just enabled the SSE and started moving 128 Bytes of memory at a time instead of 4, which made my double buffer fast enough to work (even at 1024x768x32bpp), though I would still like a buffer in video ram to switch to.
  5. Ok, hello again GameDEV - It's been a few years since I was last here.   Anyways,   I am in middle of writing a VBE driver for my kernel, currently I have a double buffer which does stop the flashing, but even at low resolutions I am unable to copy the entire buffer into active video memory within the refresh time. (at 640X480X8 it takes 2.5 refresh cycles which causes tearing)   In Real-Mode I have set the display resolution, enabled LFB, and grabbed the PMode Interface Table - and passed all information to the Kernel.   The issue that I have been facing is when trying to use the SetDisplayStart, no matter my input on DX/CX I end up with the same results. Currently my video memory has at offset 0 color 0x83 640*480 times and just after this we have color 0x28 640*480 times.   The Current VBE Mode info contains: BytesPerLine = 0x280 (640) LinBytesPerScanLine = 0x280   I am calling SetDisplayStart the following way (Intel ASM): FlipPage: pusha   mov eax, DWORD [SecondBuffer] test eax, eax jz .NotSecond   mov dx, 0 mov cx, 0 mov DWORD [SecondBuffer], 0 jmp .flipme   .NotSecond: mov dx, WORD [Height] mov cx, 0 mov DWORD [SecondBuffer], 1 .flipme:   ;Now Lets Page Flip xor bx, bx mov ax, 0x4F07 xchg bx, bx call DWORD [VBE_FUNCTION7] test ah, ah jnz ERROR cmp al, 0x4F jne ERROR   popa ret And no matter how DX/CX is filled the result is always (or Y out of range panic from Bochs): [attachment=28809:2015-08-20-014835_642x555_scrot.png] and yes even with DX and CX = 0 this is the result.   So I'm hoping beyond all hope someone here has done this before (as the internet seems to have no reference other than what is in the VBE Specifications...)   I know we are going back to the mid/early 90's here, but I cannot write a driver per card (most have no Info) so I'm stuck with VBE support and software rendering.
  6. I hope I placed this in the right topic as AR and LD are "Tools"  .   First note I realize my build script should be a MakeFile, but it's a cmd script.   Second note I have attempted to search Google, this Forum, and OSDEV but the keywords here are way to vague and only 2 letters so all results I saw did not relate to my situation.       Ok, I have currently one ASM file containing all the assembly code I need; but, while rewriting parts of the project I decided I want to break this one ASM file into about 6.   Let me dump some of the build script here before I get into my question...: ... @ECHO IDT.C gcc %GCC_OPTIONS% ./OBJ/IDT.O ./DRIVERSRC/SYSTEM/CPU/IDT.c @ECHO IRQ.ASM nasm -f aout ./DRIVERSRC/SYSTEM/CPU/IRQ.ASM ./OBJ/IRQA.O @ECHO IRQ.C gcc %GCC_OPTIONS% ./OBJ/IRQ.O ./DRIVERSRC/SYSTEM/CPU/IRQ.c ... ar rvs ./DRIVER/sys.a ./OBJ/8259.O ./OBJ/GDT.O ./OBJ/IDT.O ./OBJ/IRQA.O ./OBJ/IRQ.O ./OBJ/TSS.O ./OBJ/FAT12.O ar rvs ./DRIVER/sys.a ./OBJ/VFS.O ./OBJ/PAGEDIR.O ./OBJ/PAGEFAULT.O ./OBJ/PAGETABLE.O ./OBJ/PHYSICAL.O ar rvs ./DRIVER/sys.a ./OBJ/VIRTUAL.O @ECHO START.ASM nasm -f aout ./KERNELSRC/START.ASM -o ./OBJ/START.O @ECHO MAIN.C gcc %GCC_OPTIONS% ./OBJ/MAIN.O ./KERNELSRC/MAIN.c @ECHO COMMAND.C gcc %GCC_OPTIONS% ./OBJ/COMMAND.O ./KERNELSRC/COMMAND.c @ECHO LINKING KERNEL.BIN LD -T %LD_SCRIPT% -o %OUTPUT_FILE% ./OBJ/START.O ./OBJ/MAIN.O ./OBJ/COMMAND.O ./LIB/lib.a ./DRIVER/sys.a ./DRIVER/hw.a ... As you can see above my only ASM file "START.ASM" is compiled format AOUT and placed in directly with the LD command - this works fine.   But when I split this source file into the appropriate sections I run into one of two problems: 1. Add to the archive - Error returned "./DRIVER/sys.a: could not read symbols: File truncated" 2. Add files to LD command - LD becomes too long and the system cannot process it.   The reason I oppose a MakeFile so much is I am constantly rebuilding / testing and a simple BATCH loop with a menu is great - plus I haven't sat down to find out how one is constructed...   So, anyways, my question is - Is there a way to archive ASM and C objects in the same library, or is there an all-together better way of doing this?
  7. Sure; Always* keep the null-terminator in mind when dealing with strings: [tt]ret[/tt] isn't large enough to hold 16 characters and the null terminator; [tt]sprintf[/tt] is writing the null terminator in memory that doesn't belong to [tt]ret[/tt]! Always* look for ways to reduce and refactor duplicate code: Notice the format parameter for [tt]sprintf[/tt] in [tt]BinHex[/tt] is twice that of [tt]bytes[/tt]? You can reduce this whole case statement by adding another level of indirection; try using another sprintf to prepare the format parameter. The switch case in [tt]HexBin[/tt] can also be reduced to a loop. Always* enforce parameter constraints. The [tt]bytes[/tt] parameter can only be between 1 and 8, but you have a special behavior defined when it is not. It may be better to throw a fatal error in this case by using assert. *Be wary of statements such as "always do this" or "never do that", it's "always" situational and may not fit every use case. Here's the reduced code: [spoiler] #include <assert.h> // 17 characters, to make room for the null-terminator void BinHex(char Bin[17], char ret[17], int bytes) { // Enforce constraints assert( 1 <= bytes && bytes <= 8 ); // Here, we use pointers to read and write to and from ret and Bin respectively char* dst = &ret[0]; char* src = &Bin[0]; // Equivalent to "for ( ; bytes > 0; bytes-- )" while ( bytes-- ) { // sprintf returns the number of characters written, so can use this // to our advantage and move the write pointer 2 characters for // every 2 characters written dst += sprintf(dst,"%02x",(unsigned int)(*src++) ); // "*src++" read a charater from src and moves it to the next character } } void DexHex(unsigned int Dec, char ret[17], int bytes) { assert( 1 <= bytes && bytes <= 8 ); char fmt[5]; // "%%" -> "%" // "%02i" -> zero-padded bytes*2, width of 2 // "x" -> "x" sprintf(fmt,"%%%02ix",bytes*2); // When bytes=4 and Dec=65534, "%%%02ix" -> "%08x" sprintf(ret,fmt,Dec); // "%08x" -> 0000FFFE } [/spoiler] Hope this helps! EDIT: Formatting/editing   That helped a lot, thanks. I did have to edit your code to the following BinHex was slightly wrong:   #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <assert.h> #include "MyFS.h" // 17 characters, to make room for the null-terminator void BinHex(char Bin[17], char ret[17], int bytes) { // Enforce constraints assert( 1 <= bytes && bytes <= 8 ); // Here, we use pointers to read and write to and from ret and Bin respectively char* dst = &ret[0]; char* src = &Bin[0]; // Equivalent to "for ( ; bytes > 0; bytes-- )" while ( bytes-- ) { // sprintf returns the number of characters written, so can use this // to our advantage and move the write pointer 2 characters for  // every 2 characters written dst += sprintf(dst,"%02x",(unsigned int)(src[bytes]) );   // "src[bytes]" read a charater from src and moves it to the previous character } } void DecHex(unsigned int Dec, char ret[17], int bytes) { assert( 1 <= bytes && bytes <= 8 ); char fmt[5]; // "%%" -> "%" // "%02i" -> zero-padded bytes*2, width of 2 // "x" -> "x" sprintf(fmt,"%%%02ix",bytes*2); // When bytes=4 and Dec=65534, "%%%02ix" -> "%08x" sprintf(ret,fmt,Dec);  // "%08x" -> 0000FFFE } unsigned int HexDec(char* Hx) {     unsigned int ret;     ret = (unsigned int)strtol(Hx, NULL, 16);     return ret; } But it defiantly helped with readability    Thanks,   Brian T Hoover
  8.   LOL!   How the hell did you do that???   Anyway, i dont want to be mean, we all started like this, me included, but this should go in the coding horror section   Your code is flawed in so many way, im surprised it even work.   All this code could be baked down using loops to something like 8 lines of code...   May I suggest working on something more easier first, like strings manipulation, and integer to strings conversion and vice versa, and loops.   first Alt +0CA0 in windows or &#3232; HTML code or "\u0CA0" C(++) and Java for the ? character   Yes, I know my code is way off but it compiles and links with no errors or warnings lol and works. For me I am not used to standard libraries - or protected mode, you should see how bad the actual code looks, you just saw me trying to convert data and my code above was wrong too, BinHex was completely backwards   If you can suggest an easier and\or better way of doing this please point me in the right direction.  I'm only on my second build here and I know I have at least two more before I get all the features I want such as fragmentation (yea I know breaking files into parts is a bad idea [Microsoft] but I want the ability if it is needed)   FYI: I am mostly doing this because I was having such a hard time trying to read the FAT12 File System and I wanted to expand my knowledge more and the best way I could think of was make my own so that I can get the in's and out's using the FAT File System as my base and changing very little. I have one more function to get working and V 0.2 shall be done and if anyone wants it just post and I'll release it.
  9. Because someone else posted in response, I'll show you my solution:   #include <stdlib.h> #include <stdio.h> #include <string.h> unsigned int HexDec(char* Hx) {     unsigned int ret;     ret = (unsigned int)strtol(Hx, NULL, 16);     return ret; } void DecHex(unsigned int Dec, char ret[16], int bytes)        //1-8 bytes {     switch(bytes)     {         case 1:             sprintf(ret,"%02x", Dec);             break;         case 2:             sprintf(ret,"%04x", Dec);             break;         case 3:             sprintf(ret,"%06x", Dec);             break;         case 4:             sprintf(ret,"%08x", Dec);             break;         case 5:             sprintf(ret,"%10x", Dec);             break;         case 6:             sprintf(ret,"%12x", Dec);             break;         case 7:             sprintf(ret,"%14x", Dec);             break;         case 8:             sprintf(ret,"%16x", Dec);             break;         default:             sprintf(ret,"%08x", Dec);             break;     }     return; } void BinHex(char Bin[16], char ret[16], int bytes)        //1-8 Bytes {     //int bytes = sizeof(Bin);     switch(bytes)     {         case 1:             sprintf(ret, "%02x", (unsigned int) Bin[0] & 0xFF);             break;         case 2:             sprintf(ret, "%02x%02x", (unsigned int) Bin[0] & 0xFF, (unsigned int) Bin[1] & 0xFF);             break;         case 3:             sprintf(ret, "%02x%02x%02x", (unsigned int) Bin[0] & 0xFF, (unsigned int) Bin[1] & 0xFF, (unsigned int) Bin[2] & 0xFF);             break;         case 4:             sprintf(ret, "%02x%02x%02x%02x", (unsigned int) Bin[0] & 0xFF, (unsigned int) Bin[1] & 0xFF, (unsigned int) Bin[2] & 0xFF, (unsigned int) Bin[3] & 0xFF);             break;         case 5:             sprintf(ret, "%02x%02x%02x%02x%02x", (unsigned int) Bin[0] & 0xFF, (unsigned int) Bin[1] & 0xFF, (unsigned int) Bin[2] & 0xFF, (unsigned int) Bin[3] & 0xFF, (unsigned int) Bin[4] & 0xFF);             break;         case 6:             sprintf(ret, "%02x%02x%02x%02x%02x%02x", (unsigned int) Bin[0] & 0xFF, (unsigned int) Bin[1] & 0xFF, (unsigned int) Bin[2] & 0xFF, (unsigned int) Bin[3] & 0xFF, (unsigned int) Bin[4] & 0xFF, (unsigned int) Bin[5] & 0xFF);             break;         case 7:             sprintf(ret, "%02x%02x%02x%02x%02x%02x%02x", (unsigned int) Bin[0] & 0xFF, (unsigned int) Bin[1] & 0xFF, (unsigned int) Bin[2] & 0xFF, (unsigned int) Bin[3] & 0xFF, (unsigned int) Bin[4] & 0xFF, (unsigned int) Bin[5] & 0xFF, (unsigned int) Bin[6] & 0xFF);             break;         case 8:             sprintf(ret, "%02x%02x%02x%02x%02x%02x%02x%02x", (unsigned int) Bin[0] & 0xFF, (unsigned int) Bin[1] & 0xFF, (unsigned int) Bin[2] & 0xFF, (unsigned int) Bin[3] & 0xFF, (unsigned int) Bin[4] & 0xFF, (unsigned int) Bin[5] & 0xFF, (unsigned int) Bin[6] & 0xFF, (unsigned int) Bin[7] & 0xFF);             break;         default:             sprintf(ret, "%02x%02x%02x%02x", (unsigned int) Bin[0] & 0xFF, (unsigned int) Bin[1] & 0xFF, (unsigned int) Bin[2] & 0xFF, (unsigned int) Bin[3] & 0xFF);             break;     }     return; } works flawlessly ;) (for my situation at the very least)
  10. so, my hackish way got around not being able to return arrays and changed all my char functions to just a function no return and added an argument of the variable to modify which is an array.   and FYI the 4-Bytes was referring to how many bytes I hard coded the section to process, remember this is reading an entire disk with a custom File System and I'm using 32 bit addressing which breaks down to 4 bytes, actually my code can handle 1-8 bytes, but I subtracted a lot of it to save on reading time of useless information   1 sector = 512 bytes 1 cluster = 19 sectors   sector 1 = boot sector sector 2-19 = File Table rest = File Data
  11. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> FILE *FS; FILE *LF; unsigned int HexDec(char Hx[16]) {     unsigned int ret;     ret = (long int)strtol(Hx, NULL, 16);     return ret; } char DecHex(unsigned int Dec) //4 bytes {     char ret[16];     sprintf(ret,"%08x", Dec);     return ret; } char BinHex(char Bin[16]) //4 Bytes {     char ret[16];     sprintf(ret, "%02x%02x%02x%02x", (unsigned int) Bin[0] & 0xFF, (unsigned int) Bin[1] & 0xFF, (unsigned int) Bin[2] & 0xFF, (unsigned int) Bin[3] & 0xFF);     return ret; } void main() {     char BIN[16] = "AA55";     char HEX[16] = BinHex(BIN);     unsigned int DEC = HexDec(HEX);     char DECHEX[16] = DecHex(DEC);     printf("Bin: %s\n\n", BIN);     printf("To Hex: %s\nTo Dec: %u\n\n Dec %u to Hex %s\n", HEX, DEC, DEC, DECHEX); }   I am currently rewriting horrible looking test code and trying to get some functions to clean up, but I'm running into the issue where I must have arrays not pointers returned to be able to manipulate the data being processed.   ?The end goal is to give me access to my custom File System threw linux terminal. Currently my first code works flawlessly, but the code is so hard to read and has the same segments over and over again (these segments are what I'm trying to get into functions).   The function DecHex is the main one I am worried about returning as an array because my code currently looks like:   //sprintf(hx,"%08x",(unsigned int) filesize);  what is currently here hx = DecHex(filesize); printf("Hex value of Decimal value %ld  is %s\n",filesize,hx); sprintf (tmp, "%c%c", hx[6], hx[7]); tmpb = strtol(tmp, NULL, 16); printf("%s - %u\n", tmp, tmpb); putc(tmpb, FS); sprintf (tmp, "%c%c", hx[4], hx[5]); tmpb = strtol(tmp, NULL, 16); printf("%s - %u\n", tmp, tmpb); putc(tmpb, FS); sprintf (tmp, "%c%c", hx[2], hx[3]); tmpb = strtol(tmp, NULL, 16); printf("%s - %u\n", tmp, tmpb); putc(tmpb, FS); sprintf (tmp, "%c%c", hx[0], hx[1]); tmpb = strtol(tmp, NULL, 16); printf("%s - %u\n", tmp, tmpb); putc(tmpb, FS);     And as I stated my old code is bad for the eyes (~900 lines of confusing), I am getting to that part but first I need this pointer array issue fixed.   If you need my old code for something let me know, otherwise it is best kept away from eyes lol.   Any help is appreciated, Thanks in advance B T Hoover  
  12. wow I can't believe I missed that for this long...   Thanks for the help BASICFreak
  13. First here is the code: <?php require './includes/config.ini.php'; ?> <html>     <head>         <title>Database Structure</title>     </head>     <body bgcolor="#FFFFFF" text="#000000">         <center><h1><?PHP echo $database; ?></h1>             <table border="1" cellspacing="0" width="820">                 <tr>                     <td width="175">Table</td>                     <td width="175">Field</td>                     <td width="175">Field Type</td>                     <td width="290">Value</td>                 </tr>          <?PHP mysql_connect($server, $username, $password) or die(mysql_error()); mysql_select_db($database) or die(mysql_error()); $tableresults = mysql_query("SHOW TABLES"); while ( $tablerows = mysql_fetch_array($tableresults) ) {     $structureresults = mysql_query("DESCRIBE ".$tablerows[0]);     while ( $structurerows = mysql_fetch_array($structureresults) )     {         $result = mysql_query("SELECT * FROM ".$tablerows[0]);         while ( $row = mysql_fetch_array($result) )         {             echo '<tr>                     <td>'.$tablerows[0].'</td>                     <td>'.$structurerows['Field'].'</td>                     <td>'.$structurerows['Type'].'</td>                     <td>'.$row[$tablerows['Field']].'</td>                 </tr>';         }     } } ?>             </table>         </center>     </body> </html> The issue I am having is I am not displaying any of the values from the table, all other information is displaying fine, anyone have any ideas.   Could it be that I cannot use a variable to locate an array point?     Any help is greatly appreciated   BASICFreak  
  14. This was my first time to use any commands in a BATCH file, I never thought it could get so confusing. It took me 13 whole hours of trial and error and research. I couldn't find a tool to do exactly what I wanted and figure it may be of use to others. The script has no output while running, and can take a very long time to process depending on your registry size FILE NAME = REGKEYEXTRACTOR.CMD [code] @ECHO OFF setlocal enableextensions enabledelayedexpansion COLOR 1F CLS SET ARGS=0 SET OPTS=0 SET OPTIONS= FOR %%x IN (%*) DO SET /A ARGS+=1 IF %ARGS% LSS 1 GOTO ERROR IF "%1" == "" GOTO ERROR IF "%1" == "/?" GOTO ERROR SET RtKy=%1 SHIFT IF NOT X%1X==XX ( SET OPTIONS=%1 SET OPTION_ALL=%1 SET /A OPTS+=1 ) IF NOT X%OPTIONS%X==XX GOTO LOOP :LOOP SHIFT IF X%1X==XX GOTO ENDLOOP SET OPTIONS=%OPTIONS% %1 SET OPTION_ALL=%OPTION_ALL%~%1 SET /A OPTS+=1 GOTO LOOP :ENDLOOP IF %OPTS% GEQ 1 GOTO GETOPTIONS GOTO :EOF :GETOPTIONS FOR /F "USEBACKQ TOKENS=1-%OPTS% DELIMS=~" %%A IN ('%OPTION_ALL%') DO ( IF %OPTS% GEQ 1 SET OPTION_1=%%A IF %OPTS% GEQ 2 SET OPTION_2=%%B IF %OPTS% GEQ 3 SET OPTION_3=%%C IF %OPTS% GEQ 4 SET OPTION_4=%%D IF %OPTS% GEQ 5 SET OPTION_5=%%E IF %OPTS% GEQ 6 SET OPTION_6=%%F IF %OPTS% GEQ 7 SET OPTION_7=%%G IF %OPTS% GEQ 8 SET OPTION_8=%%H IF %OPTS% GEQ 9 SET OPTION_9=%%I IF %OPTS% GEQ 10 SET OPTION_10=%%J IF %OPTS% GEQ 11 SET OPTION_11=%%K IF %OPTS% GEQ 12 SET OPTION_12=%%L IF %OPTS% GEQ 13 SET OPTION_13=%%M IF %OPTS% GEQ 14 SET OPTION_14=%%N IF %OPTS% GEQ 15 SET OPTION_15=%%O IF %OPTS% GEQ 16 SET OPTION_16=%%P IF %OPTS% GEQ 17 SET OPTION_17=%%Q IF %OPTS% GEQ 18 SET OPTION_18=%%R IF %OPTS% GEQ 19 SET OPTION_19=%%S IF %OPTS% GEQ 20 SET OPTION_20=%%T ) IF "%OPTION_1%"=="/I" ( IF %OPTS% EQU 2 ( IF NOT X%OPTION_2%X==XX ( SET INFILE=%OPTION_2% GOTO INPUTTEXT ) ELSE ( GOTO ERROR ) ) ELSE ( GOTO ERROR ) )ELSE IF "%OPTION_1%"=="/i" ( IF %OPTS% EQU 2 ( IF NOT X%OPTION_2%X==XX ( SET INFILE=%OPTION_2% GOTO INPUTTEXT ) ELSE ( GOTO ERROR ) ) ELSE ( GOTO ERROR ) ) ELSE ( GOTO QUERY ) GOTO :EOF :INPUTTEXT FINDSTR /B /C:"HKEY" %INFILE% > TEMP.TXT ECHO Windows Registry Editor Version 5.00 > %RtKy%-FINAL.REG ECHO. >> %RtKy%-FINAL.REG FOR /F "TOKENS=1* DELIMS=\" %%A IN (TEMP.TXT) DO ( REG EXPORT "%RtKy%\%%B" TMP.REG /Y TYPE TMP.REG > TEMP.REG DEL TMP.REG /Q FOR /F "SKIP=2 TOKENS=*" %%a IN (TEMP.REG) DO @ECHO %%a >> %RtKy%-FINAL.REG DEL TEMP.REG /Q ) DEL TEMP.TXT GOTO :EOF :QUERY REG QUERY %RtKY% %OPTIONS% > QUERYTEMP.TXT SET INFILE=QUERYTEMP.TXT GOTO INPUTTEXT GOTO :EOF :ERROR ECHO REGKEYEXTRACTOR.CMD ECHO By Brian T. Hoover A.K.A. BASIC.Freak ECHO. ECHO USSAGE REGKEYEXTRACTOR.CMD RootKey [OPTIONS] ECHO EXAMPLE REGKEYEXTRACTOR.CMD HKLM /S /F "FOO bar" /Z ECHO REGKEYEXTRACTOR.CMD HKLM /I hklm.TXT ECHO. ECHO RootKey - [ HKLM ^| HKCU ^| HKCR ^| HKU ^| HKCC ] ECHO. ECHO [OPTIONS] -- WARNING DO NOT USE A '~' IN OPTIONS! -- ECHO /I "InputFile" - USE A PRE-OUTPUTED REG QURY FILE ECHO. ECHO ---------------------------- OR ---------------------------- ECHO. ECHO /S Queries all subkeys and values recursively (like dir /s). ECHO. ECHO /se Specifies the separator (length of 1 character only) in ECHO data string for REG_MULTI_SZ. Defaults to "\0" as the separator. ECHO. ECHO /f Specifies the data or pattern to search for. ECHO Use double quotes if a string contains spaces. Default is "*". ECHO. ECHO /k Specifies to search in key names only. ECHO. ECHO /d Specifies the search in data only. ECHO. ECHO /c Specifies that the search is case sensitive. ECHO The default search is case insensitive. ECHO. ECHO /e Specifies to return only exact matches. ECHO By default all the matches are returned. ECHO. ECHO /t Specifies registry value data type. ECHO Valid types are: ECHO REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ, ECHO REG_DWORD, REG_QWORD, REG_BINARY, REG_NONE ECHO Defaults to all types. ECHO. ECHO /z Verbose: Shows the numeric equivalent for the type of the valuename. GOTO :EOF [/code] enjoy [img]http://public.gamedev.net/public/style_emoticons/default/biggrin.gif[/img]
  15. here is the source my page displays, minus some private and unimportant information: [code] <html> <head> <script TYPE="text/javascript"> <!-- var downStrokeField; function autojump(fieldName,nextFieldName,fakeMaxLength) { var myForm=document.forms[document.forms.length - 1]; var myField=myForm.elements[fieldName]; myField.nextField=myForm.elements[nextFieldName]; if (myField.maxLength == null) myField.maxLength=fakeMaxLength; myField.onkeydown=autojump_keyDown; myField.onkeyup=autojump_keyUp; } function autojump_keyDown() { this.beforeLength=this.value.length; downStrokeField=this; } function autojump_keyUp() { if ( (this == downStrokeField) && (this.value.length > this.beforeLength) && (this.value.length >= this.maxLength) ) this.nextField.focus(); downStrokeField=null; } //--> </SCRIPT> <script type="text/javascript" language="javascript"> var domTT_styleClass = 'domTTOverlib'; var domTT_maxWidth = false; try { var winCloseButton = document.createElement('img'); winCloseButton.src = './images/close.png' winCloseButton.style.verticalAlign = 'bottom'; } // permission denied catch (e) { var winCloseButton = 'X'; } </script> <style type='text/css' media='print'> .dontPrint { display : none } body { color: #000000; background-color: #FFFFFF; } body a:link { color: #000000; } body a:visited { color: #000000; } body a:hover { color: #000000; } body a:active { color: #000000; } </style> <style> @import url("./css/frame.css"); </style> <style> @import url("./css/ratingSystem.css"); </style> <script type="text/javascript" language="javascript" src="./js/domTT.js"></script> <script type="text/javascript" language="javascript" src="./js/CursorFinder.js"></script> <script type="text/javascript" language="javascript" src="./js/domLib.js"></script> <script type="text/javascript" language="javascript" src="./js/alphaAPI.js"></script> <script type="text/javascript" language="javascript" src="./js/domTT_drag.js"></script> <script type="text/javascript" language="javascript" src="./js/fadomatic.js"></script> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>****</title> </head> <body bgcolor=#000000 text=#FFFF00 alink=#FFFFFF hlink=#FFFFFF link=#FFFFFF vlink=#FFFFFF><center> <script type="text/javascript"> <!-- if(window.location != "****") window.location = "****" //--> </script> <table border=0 width=920> <tr height=85> <td valign=center align=center width=20%>Welcome Back,<br>****<br><a href="logout.php"> Log Out</a></td> <td valign=center align=center width=20%><a href="#void" onclick="return makeFalse(domTT_activate(this, event, 'id', 'cust', 'caption', 'Add Customer', 'content', '&lt;iframe src=&quot;addCust.php&quot; style=&quot;width: 700px; height: 575px;&quot;&gt;&lt;/iframe&gt;', 'type', 'sticky', 'styleClass', 'domTTWin', 'closeLink', winCloseButton, 'draggable', true, 'closeAction', 'destroy'));"> Add Customer</a></td> *unimportant* <hr><br><script type="text/javascript" language="javascript"> var domTT_styleClass = 'RSTitle'; </script><form method=post> <table border="0" width="425"> <tr> <td width="20%"><img alt="" src="./images/4.png" onmouseover='domTT_activate(this, event, "content", "****<br>Marked As: Good<hr>****", "styleClass", "RSTitle", "trail", "true");'></td> <td width="40%">152</td> <td width="20%">****</td> <td width="40%"><input type="submit" name="btnChangeCustomer" value="Change"></td> </tr></table></form> *unimportant* </table></center> </body> </html> [/code] I checked that I am correctly locating the JavaScript and CSS Files after I edited some code on this page, none of the DomTT is working, and I have not edited any of the domTT scripts or calls. all the code left out and replaced with *unimportant* was links and forms and **** was another person's (or my) private information I'm trying to find where I went wrong, even when I uploaded the code from right before this change it still did not work if you need more of the code or for me to give a link to a "demo" page just ask and I'll post as much as I can.