Skip to content

Education For All

I believe that a good education for EVERYONE in the USA is essential.  People complain about how our current education system is not educating our children.  I have witnessed our education system from a student view and from a teacher view.  Students are forced to take classes that they are not properly prepared to understand.  Teachers are forced to follow a pre-set curriculum that is designed to teach at a pace that bores most students and confuses those who have learning disabilities.  Some students are passed from grade to grade without learning the required information because their parents will not allow them to be “failed.”  Some students are passed without having done ALL of the required work and acquiring the knowledge expected of someone having completed that particular class.  Some students quit school and find laborer jobs with bleak futures.  Some students take the GED and move into college where they are mentally challenged but physically much younger than the other students.

I believe that MOST parents with children in school want their children to be educated. Children with learning disabilities by law are to get equal treatment or equal education.  The problem is, nobody looks at the part of the law that says “you have the right to …. UNLESS such action violates the rights of others.”  What about the rights to a good education of the brightest students?  Is it fair to anyone if you put the slowest learners in the same class as the fastest learners?  NO!  So, now there are “advanced” or “college prep” classes instead of “special education.”  And STILL, neither group of students is getting the education that they really deserve.

My solution:

1.  Do away with grade levels and use a system of Prerequisites.

In order to enroll in a particular subject a student would need to have completed the prerequisites for that class.

2.  Provide a continuous education location.

People in the “real world” are not separated by age.  All students would be attending school in the same location, from the youngest students to the oldest students.  Perhaps the oldest students taking “child care” classes might look after the youngest students in the latter part of the day when the youngest students are tired and unable to continue learning.

3.  Provide shorter subjects with multiple groups or speeds for the classes.

For example:  Group 1 would take 3 weeks to complete the basic class; Group 2 might take 2 weeks to complete the basic class;  And, group 3 might take 1 week to complete the basic class.  But at the end of the basic class, each group would have the SAME knowledge and prerequisite to qualify for the next level of class.  If a student found a particular group too fast or slow then he could choose a different group for the next level of that subject.  Since we do not learn each subject at the same rate, students would not be forced to enroll in any particular group for any particular class but would be allowed to join the group which will allow them to learn at a pace where they would learn ALL of the required knowledge for that particular subject.  A student might be taking Math classes in Group 1 but be taking Biology in Group 3 while another student might be taking Math in Group 3 and Biology in Group 1, and, both students might be taking English in Group 2.

4.  Provide Year-Round school.

The current basic school-year is archaic.  Students do not normally need the summer off to help on the farm or whatever they did in the past when the timeframe was established.  Students could still take “vacation” by simply not enrolling in classes for that period of time.  They might take their vacation in the middle of winter because their family likes to take a ski vacation.

5.  Provide a longer school day.

The current school-day does not allow flexibility for circumstances of life.  A student (or a teacher) may need to start school late, or perhaps may need to work in the middle of the day to help family members.  A flexible schedule would allow students to get the education they deserve without adding to other burdens in their life.

This is not an exhaustive list, just a few ideas.  I know there are many things to be worked out in order to implement such an educational system but I believe that it would do a better job of educating our citizens.

Advertisements

The Joy of Game Hacking – Part 2

The Joy of Game Hacking – Part 2

WARNING!! Before proceeding with these procedures, you should make a backup copy your Wiz1.dsk file to a safe location.  Mine was located in C:\users\tom\D-Fend Reloaded\VirtualHD\wizardry-proving-grounds-of-the-mad-overloard.  Yours may be in a different location depending upon your installation.  You can search for it in Windows.

NOTE:  I created the images for this tutorial over a period of time.  There may be some changes between one image and the next as far as the addresses that are being examined.  If you do this in one session, your addresses will be consistent.

You WILL need to understand a little computer mathematics in order for you to intelligently perform the procedures that will follow.  You will need to understand how to work with Decimal, Hexadecimal, and Binary based numbers.  When it is not clear what base a number is in, I will use a “b” after a binary number, a “0x” in FRONT of a hexadecimal number and a “d” after a decimal number.  So, 1111d is a decimal number, 1111b is a binary number, and 0x1111 is a hexadecimal number.  Because we normally think in decimal, I will consider “values” to be in decimal unless otherwise specified.

First, consider decimal or base 10 numbers.  The possible digits are 0,1,2,3,4,5,6,7,8, and 9.  It has a total of 10 possible values for each “place” in the number.  If you have a number that cannot be represented with a single decimal digit, then you add a second digit to the left that has 10 times more value.  The digit on the far right is always in the “units” place.  Consider the number 22.  Each of the digits is the same, but they do not have the same numeric value.  The 2 on the right is in the units or  1’s place and it’s value is just 1×2=2.  The 2 on the left is in the tens place and it’s value is 10×2=20.  To get the value of the full number, you add the value of the digits in their “place” and in this case you get (10×2)+(1×2) for a value of 22.  The REASON that the digit on the left is 10x more value is because there are 10 possible digits.

Now think of the decimal number 5432 and what each digit represents.  The 2 is in the “units” place, or it represents 1×2.  The 3 is in the “tens” place, or it represents 10×3.  The 4 is in the “hundreds” place and represents 100×4.  Last, the 5 is in the “thousands” place and represents 1000×5.  As you move left in the number, each place is 10 times more value.  To get the full value of the number we add them up (1×2)+(10×3)+(100×4)+(1000×5).

Second, consider binary or base 2 numbers.  The possible binary digits (bits) are 0 and 1 for a total of 2 possible values for each place in the number.  As you move left in a binary number, the places have twice the value of the previous place.  Consider the binary number 11.  The 1 on the right is in the “units” place. So it’s value is 1×1.  The 1 on the left is in the 2’s place so it’s value is 2×1.  To get the value of the number, we add them up, (2×1)+(1×1) for a value of 3 in decimal.  For now, the largest binary number we will work with contains 8 digits to represent a Byte.  I will normally write binary Bytes with a space between the first 4 bits and the last 4 bits because it is easier for me to think in terms of only 4 bits at a time.

Third, consider hexadecimal or base 16 numbers. The possible hexadecimal digits are 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, and F for a total of 16 possible values for each place in the number.  As you move left in a hexadecimal number the places have 16 times the value of the previous place.  Consider the number 0x1111.  Starting from the right, the 1 in the units place has a value of 1×1.  The second digit from the right, in the 16’s place has a value of 16×1.  The third digit has a value of 256×1.  The last digit has a value of 4096×1.  So, the value of 0x1111 is (1×1)+(16×1)+(256×1)+(4096×1) or 4369d.  As you can see, the value of a hexadecimal number can be very large for a few digits.  The largest hexadecimal number we are likely to work with is 0xFFFF or 65535d because it is two bytes in length.

Computers work in binary.  A circuit is either on or it is off.  We work in hexadecimal because binary is too cumbersome.  Converting from decimal to hexadecimal or binary is much more difficult than converting from binary to hexadecimal or from hexadecimal to binary.

Here is a small conversion chart for all 16 possible combinations in a 4 bit number:

Decimal         Hex                Binary

0                      0                     0000

1                      1                      0001

2                      2                     0010

3                      3                     0011

4                      4                     0100

5                      5                     0101

6                      6                     0110

7                      7                      0111

8                      8                     1000

9                      9                     1001

10                    A                     1010

11                    B                     1011

12                    C                     1100

13                    D                     1101

14                    E                     1110

15                    F                     1111

Notice that 4 bit binary matches up nicely with single digit hexadecimal numbers.  This extends into a full Byte with 2 hex digits.

0xFF  =  11111111b (or more commonly 1111 1111 because it is obviously binary representing 2 hex digits).

At the end of Part 1, Superman’s STR, IQ, PIE, VIT, AGI, and LUK were all at 18.  In this part we will modify those stats to higher values.  Use your character’s name in ALL CAPITAL LETTERS when I use SUPERMAN.  Here is SUPERMAN with all 18’s:

Illustration 01

If you haven’t already made a few more Wizardry characters, do that now.  NOTE: DO NOT take a lone character into the dungeon unless you want to leave him/her there.  If he/she gets paralyzed then they will be lost and you will need to go after him/her with another group of 5 or less characters.  It will be much easier to locate the proper place to modify if you have a full party of characters in your game.  Here is my *Roster of characters:

Illustration 02

Go to Gilgamesh’s Tavern and form a group with at least 3 characters as follows: Make sure SUPERMAN is the first character and the other characters are in a different order than listed in the *Roster.  Here is my group of 6 characters:

Illustration 03

Notice that BRUCE LEE and CHUCK NORRIS are in a different order in the group than they were in my *Roster.  I did this so that I can tell the difference in memory between the *Roster and my “Active Group”.

All of my characters were made as described in Part 1 and they have 18 for each of STR/IQ/PIE/VIT/AGI/LUK.

Leave Wizardry with Alt-Tab (do not quit the game) and start up Cheat Engine.  Link it to DosBox.exe as in Part 1.  The characters are in memory at several locations.  We need to find the location that has them in the group because this location will overwrite all of the others when you quit Wizardry.  So, if you modify the wrong location, your changes will be lost whenever the game writes to that location.  Click on New Scan and set the Value Type to Text.  Now type SUPERMAN in the Text box.  It MUST be in all capitals unless you uncheck the “Case sensitive”.  And, I prefer to have it case sensitive for my searches.  Click on First Scan.  Hopefully, you will be presented with one or more addresses (they will not likely be the same addresses that I get) where you can find “SUPERMAN”.  Here are my results:

Illustration 04

Only one of the addresses will point into the area of my active group.  In order to find out which of them is my active group in memory I need to examine each one. I need to narrow down the choices to just one for modifications.  So I double-click on each address to add it to my list at the bottom.  I will not put in a description yet, so here is what I get in my list:

Illustration 05

In order to check out the area of memory, right-click on the first address and select “Browse this memory region” from the list.  The Memory Viewer will come up and SUPERMAN will be at the top.  A second character name should be just underneath the data for SUPERMAN.  Here are my results for the first address:

Illustration 06

I can readily see that the next character after SUPERMAN is not my second character in the group (BRUCE LEE), so this is not the memory location of my group.  I remove this address from my list and examine the memory location of the next address:

Illustration 07

Once again, this is not the right location so I remove this address from the list and browse the next address:

Illustration 08

This is where having a different character order in my group from the character order in the *Roster helps in the process.  My group has SUPERMAN first, then BRUCE LEE, and CHUCK NORRIS third.  I note that this address MIGHT be the location of the *Roster but it is not the location of my group.  I remove this address from the list and browse the last address on my list:

Illustration 09

This looks like it IS the correct location to modify the characters of my group.  (Good thing, since it was my LAST address!)  As I scroll down in memory I see each of the characters in my active group in the correct order.

NOTE: The information you see may vary in address and content from mine if you have run SUPERMAN into the dungeon to test him.  Don’t worry, this procedure will still work.  Scroll the Memory Viewer up by a line or two so you can see the line above SUPERMAN.  From the ORIGINAL Wizardry Player’s Guide, I know that the game was written in the Pascal language.  I also know that Pascal stores strings (like the names) with a character count before the letters.  The character count is the number of letters in the name.  With “SUPERMAN” there should be a character count of 8.  What we are interested in seeing, is the value 08 at the far right in the line directly above SUPERMAN.  I may be wrong at this point, but I believe that this is the starting point in memory for data affecting Superman.  The 08 is the number of letters in “SUPERMAN”.

Right click on the value 08 and select “Add this address to the list” from the selection box that appears.

Illustration 10

The address will be highlighted, just <tab> to the Description and enter something like “Number of Letters in Char 1 Name”.  Since this is a small number, change the Type to Byte and click OK.

Illustration 11

The address will appear in your list with the label given.

Illustration 12

Since the value 08 is the start of data that want to investigate, I prefer to have it on the left of the Memory Viewer table.  If you right click on the value 8 in your List, you will see the option of “Browse this memory region”.  Select this and your Memory Viewer will change:

Illustration 13

By experimentation, I know that the full line starting with 08 53 55 50…is for the letter count and letters of the Name of the character.  The next line is for the letter count and letters of the password.  For each Character there are 13 rows of data.  If you have more than one character, then the data for the second one should start at row 14.  In casual browsing of memory I have seen other information between characters but this may have been at one of the addresses that we did not use here.  Here is what I believe is the block of data for SUPERMAN (the image was made before I made more characters so there is no character after SUPERMAN):

Illustration 14

We are here to modify the stats of our characters.  As a refresher, here is the small conversion chart for all 16 possible combinations in a 4 digit binary number:

Decimal           Hexadecimal   Binary

0                      0                      0000

1                      1                      0001

2                      2                      0010

3                      3                      0011

4                      4                      0100

5                      5                      0101

6                      6                      0110

7                      7                      0111

8                      8                      1000

9                      9                      1001

10                    A                     1010

11                    B                     1011

12                    C                     1100

13                    D                     1101

14                    E                      1110

15                    F                      1111

And, for a couple more numbers of interest, using 8 binary digits:

18                    12                    0001 0010

19                    13                    0001 0011

20                    14                    0001 0100

21                    15                    0001 0101

22                    16                    0001 0110

23                    17                    0001 0111

24                    18                    0001 1000

25                    19                    0001 1001

26                    1A                   0001 1010

27                    1B                   0001 1011

28                    1C                   0001 1100

29                    1D                   0001 1101

30                    1E                    0001 1110

31                    1F                    0001 1111

The maximum normal value of Strength/IQ/Piety/Vitality/Agility/Luck is 18.  It actually only requires 5 bits to hold that value: 10010

If we put 3 of these together and fit them into two bytes we get:

10010 10010 10010

Change this to 2 8-bit numbers

1001010  01010010

Since this is one digit short of two full bytes, we then add a leading 0 to get

01001010 01010010

Change this to groups of 4 for easy conversion to hexadecimal

0100    1010    0101    0010

And the Hexadecimal notation

4          A         5          2

Now, looking at the data for SUPERMAN, we see something similar two lines down from the name and the last 4 bytes.  Only, they are out of order.  This is because the computer saves the value as low-high bytes instead of high-low.  The first 52 4A is for the STR/IQ/PIE, the second 52 4A is for the VIT/AGI/LUK.

We can now add these two memory locations to our Cheat Engine list.  Right click on the first “52” and select “Add address to the list” and set it for 2-bytes with a label. Repeat for the second “52”.  Your list should now look something like this:

Illustration 15

Repeat for the second “52”

But WAIT!!! We don’t have 52 4A in out list, it says 19026 instead!  This is because the number we see in the list is in decimal.  4A52 hexadecimal is 19026 decimal.  It is more convenient to view it in the same form (hexadecimal) as we see in the Memory Viewer.  Right click on the 19026 and select “Show as hexadecimal” then repeat for the other 19026.  Notice that the number appears in correct order of 4A52 in the list.

Illustration 16

Now it is time to decide what values you want for each of your character’s stats.  The maximum you can make with 5 bits is 31.  I know by experience that 31 is not a good value because it changes to Zero if the character GAINS one of that stat, so I will put in several different values to see if any are stable (meaning they won’t go to zero if my character advances enough times).  I know that 18 is stable, so I will try 20, 22, 24,26, 28,30 just to pick 6 numbers between 18 and 31.

Decimal           Hex                 Binary             5-bit

20                    14                    0001 0100       10100

22                    16                    0001 0110       10110

24                    18                    0001 1000       11000

26                    1A                   0001 1010       11010

28                    1C                   0001 1100       11100

30                    1E                    0001 1110       11110

Arrange my 6 numbers into groups of 3 and insert the leading 0:

0101001011011000    0110101110011110

Split it up into 4 bits for conversion to Hex

0101    0010    1101    1000    0110    1011    1001    1110

Convert to Hex

5          2          D         8          6          B         9          E

Form this into 2-byte combinations

52D8  6B9E

This is the values I need to put into my character.  Double-click on the first 4A52 and type in 52D8, then click on the second 4A52 and type in 6B9E.  The list now looks like this:

Illustration 17

And, the Memory View looks like this:

Illustration 18

Check my character:

Illustration 19

Looking at my character stats now, I find out that the order of the stats is NOT STR/IQ/PIE, VIT/AGI/LUK but rather PIE/IQ/STR, LUK/AGI/VIT.

You should have enough information now to change your character’s stats to any desired value between 0 and 31.  Why would you want to change it to 0?  To make the game harder of course!  Give yourself a challenge!  How does a character with 0 luck perform?  Does he/she get any loot?

OK, now I will throw in a quick bonus.  I notice that my character has 103 gold and 8/8 HP.  Change 103 to Hexadecimal and it is 0x67, 8 remains as 8.  Looking in the memory locations I find the 0x67:

Illustration 20

I’m not sure what the maximum amount of gold can be, but it has to be at least 6000 since the Gloves of Copper in the Trading Post cost that much.  So, it must be at least 2 bytes.  Add this address, 2-bytes as my Character’s gold to the list.

Illustration 21

Illustration 22

Since I don’t see any other values that might contain my 8’s for the Hit Points, I will now take a chance that the two 8’s about 5 rows further down are for the Current and Maximum HP’s for my character so I will add them to my list (the order may be wrong but I will find that out by putting different values in them).  Because they are spaced apart like 2-byte values, I will also make them 2-bytes each (after all, I have a backup of my file if it crashes the game).

Illustration 23

Now modify the values and give my character more HP with the current value smaller than the Max just to test.

Illustration 24

Check my character to see if I was correct:

Illustration 25

OK, that should keep you busy for some time now.  I will leave it up to you to modify your other characters if you want.  With Cheat Engine you can save your list.  When you start Wizardry again, you can find the start of your character data, then load your saved list file.  You then right click on the first data address (the one that hold the length of the name for your first character and select recalculate the addresses.  You can then select “from address” and type in the current matching address for the data.  Also, after making many changes, it is a good idea to “Leave the Game” (you don’t need to fully exit back to windows by pressing Ctrl-F9 if you want to continue playing) so the information is saved to your Hard Drive.  You can then immediately press “return for more Wizardry” and re-form your group.

Illustration 26

So far, everything we have changed has been a number that is easy to find in memory.  They are also things that are somewhat permanent while the group is in camp or at Gilgamesh’s Tavern.  There are other things that you may want to find, such as if a character is POISONED, or which goes away when you leave the dungeon.  But you may want to change it WHILE your group is still in the dungeon.  Or maybe you don’t like the name of Gilgamesh’s Tavern and would like to change it to something else, like “Workforce Office”.

Some things are harder to find.  Your character has equipment in his inventory (or it is empty). But, that equipment may affect several things in the program memory.  An item may be magical or not.  It may be equipped or not.  If equipped, it may affect Armor Class (AC) or some other stat.  If you buy one item for a character, you may see it in his/her memory location, then trade it to another character to see it move around.  Finally, equip the item to see how it changes in memory.  There are several status’ for an item, is it usable? Not-usable?  Cursed?  Magical?  I’ll investigate some of these in later tutorials.

In the next part I will show you how to find and modify the spells your magic user knows and how many of each level he/she can cast.  I may also show you how to change the age of your character (so your character will not grow old an die).

Other things to consider are the status, E.P., alignment, class, race, level, and very importantly… IN/OUT.  But these will be in later Parts.

The Joy of Game Hacking – Part 1

More than thirty years ago I bought my first home computer, an Apple ][+.  Besides the basic 48k memory, I purchased a 16k memory expansion and two 5-1/4 inch floppy drives that could store 140k on each floppy.  It was not a small investment back then and the power and storage of that system would seem like a joke in today’s world.  To top off my “system” was an HP LaserJet II printer.  Total price for everything that I bought for that computer system was near $5000 (it may have been much more than I remember, but I had been saving up for a while).

Why did I buy a computer, and why would I spend so much?  To be honest, it was for playing GAMES!!!  Yes, the primary purpose I had in purchasing that computer and all those after was to play games.  The day I walked out of the Apple store with my new computer I also walked out with several games.  Ultima was my first game.  I don’t really remember the other games I bought at that time.  Perhaps the next year or maybe even the same year I purchased Wizardry when it was first released.  I played Ultima and Wizardry for hour after hour because some of the other games I had gotten did not work as well.  The other games would lock up or maybe quit for no reason.

Back then, it was common for a game company to exchange a “broken” disk for a new copy if you just mailed it to them along with $5 payment.  One particular game, which I will not say the name, was making more money off of the broken disk sales than off of the original sales.  I personally only purchased two replacement disks from that company before I realized that the program had a bug in it and they were not trying to fix it because they were making good money off of replacements.  That was the year that I first started game hacking.  I had to learn assembly language programming in order to read the sectors of the disk as there were no utilities available at the time.  After fixing the bug in their game, I found out that the crash came right at the very end of the game.  It crashed rather than tell you that you had rescued … oh.. uhmmm… nevermind.

So, there I was, finished with hacking and fixing one bad game and just creating new characters for Wizardry to see how each race, profession, etc worked.  It just followed naturally that I would take a peek at the saved game and start making some “tweeks” to my characters.  Oh!  It was love at first “God” character!  Each of my characters had massive Hit Points!  Their Strength, I.Q., Piety, Vitality, Agility, and Luck were all at 31.  I had as much gold as I wanted (not that I needed it anymore).  My characters were equipped with all the best magical weapons and armor.  They had all the spells.  EVERYTHING!  No monsters in the dungeon were a real threat to me!

But, to me, the real joy was not in playing the game with such powerful characters, but rather the investigating into how the characters were saved on the disk.  Finding out which byte or group of bytes controlled each aspect of their environment was the challenge.  I still have the Apple ][+ but I loaned it out for a history of computers lesson and it was returned broken.  I have been unable to fix it.

Today I run PC compatible computers and I run mostly FREE games.  Recently I downloaded free PC-DOS games from a site that has LOTS of old abandoned games: http://www.myabandonware.com/browse/genre/role-playing-rpg-5/page/19/ such as Wizardry, Perfect General, Master of Magic, and more.  I also downloaded DosBox and D-Fend Reloaded from links provided at the myabandonware.com site.  After playing Wizardry for a while I decided to use some of my modern utilities to look into the saved game.

Today, good game hacking tools are available for free or very small cost.  I personally like to use FlexHEX (download shareware, worth the price), Cheat Engine (FREE http://www.cheatengine.org/downloads.php), and Yahoo!Widgets’ Screen Shooter to investigate the games.  Yahoo!Widgets are no longer available for download, nor are they  supported.  I have JUST started looking into Wizardry but I thought I would share my personal game hacking methods with others. Since I no longer have the extensive notes that I took 30 years ago, I will have to start fresh.  You can follow along with me in this tutorial.

WARNING!!!  Always make backups of ALL files from your game before attempting to hack even ONE of them.  You never know what a mistake will do to the rest of the files (or even those on your computer).  Be prepared for the WORST!  You may have to rebuild your computer hard disk if you mess up the wrong thing. 

That said, if you are willing to take the risk (don’t blame ME!)

To start, my system runs the 64 bit version of Windows 7 Professional. I went to http://www.myabandonware.com/browse/name/ downloaded Wizardry and then followed the links to download free versions of DosBox and D-Fend Reloaded.  I installed DosBox and then D-Fend Reloaded. After installing, run D-Fend Reloaded and just drag-and-drop the downloaded Wizardry archive file onto it. After D-Fend Reloaded processes the Wizardry files an entry will be added to the table and you can click on it to play.  D-Fend Reloaded provides everything that Wizardry needs to run.  You just Start the game and press Enter when it asks for a character disk. You can modify your characters AS you create them, using Cheat Engine.  Here is a screen capture of a character that was modified as I created it:

Image

Illustration 1

How many times have you RE-Rolled a character because you did not get a good bonus? How would YOU like to have enough Bonus points to create a brand new character with all of the stats at 18, as in Illustration 1 above!?  It is EASY!  Here is how I did it using Cheat Engine. You can download free Cheat Engine from http://www.cheatengine.org/downloads.php

Start Wizardry and go to the Training Grounds and select Create Character. Then go through the creation process where you name your character, pick a password, race, and alignment.  I called my toon SUPERMAN.  Then stop when you come to the screen where you distribute BONUS points to modify your toon’s stats.  It looks something like this (depends upon race, etc):

Image

Illustration 2

OK, I know that Superman is not supposed to be a human, but the Kryptonian race is not available in Wizardry.  Leave Wizardry by using Alt-tab to get to the desktop. (for me, this takes Wizardry out of full screen mode and into a more convenient windowed mode for hacking.)  NOTE: If you cannot switch from Wizardry to the desktop then you will not be able to modify your characters as you create them.

Now, start Cheat Engine and, click on the button that has a picture of a computer with a magnifying glass over it, it is near the top just under the File menu option.  When the list comes up, click on DOSBox.exe in the list and then click Open.

Image

Illustration 3

You will now have Cheat Engine linked to your Wizardry game.  It should look like this for now:

Image

Illustration 4

Notice that it says DOSBox.exe near center top.  If not, try doing the step above again. 

If all is well, click on the button that says First Scan.  Now enter the value of your character’s current BONUS points into the Value box (for SUPERMAN it is 9).  Change the Value Type to Byte using the drop down list.  Click on the First Scan button.  You will get a long list of locations that contain the value you entered.  Don’t panic, we will soon narrow this down to ONE location for you. Your Cheat Engine should look something like this (the search number will be the value that you have for BONUS):

Image

Illustration 5

Now go back into Wizardry by left clicking it or by Alt-tab and increase the STRENGTH of your toon by 1.

Image

Illustration 6

Notice that the BONUS value drops down one when you increase the STRENGTH.

 Leave Wizardry again and go to Cheat Engine with alt-tab or by clicking on Cheat Engine if in windowed mode.  Enter the new value from BONUS into the Value box and click on Next Scan.  My bonus dropped to 8, here is how my Next Scan turned out:

 Image

Illustration 7

As you can see, for SUPERMAN, there is only ONE location that held the 9 before and now holds 8.  This is the location of the BONUS value.

Image

Illustration 8

Double click on this address and it will be added to the list in the bottom of Cheat Engine.  It will say “No description” but it is not worth the effort to modify the label as the memory location changes every time you load Wizardry.

Image

Illustration 9

Double click on the number under the Value column to edit it.  I usually put a high number like 70 here to ensure I have enough bonus to make all stats at 18 for any race.

Image

Illustration 10

Return to Wizardry and start increasing your stats (the changed BONUS value will not display until you press a key to change a value or move your pointer). Here is mine after increasing the I.Q. by 1:

Image

Illustration 11

After all of your stats are at the MAX (in my case they are all 18) you MAY have some BONUS points left over, like this:

Image

Illustration 12

If you do have points left over, you MUST go back to Cheat Engine and change the BONUS to ZERO before Wizardry will let you complete the creation. Just go to Cheat Engine, double click on the leftover value, and change it to zero as in Illustration 13:

Image

Illustration 13

Then go back to Wizardry and press Escape to enable CLASS selection for your character. In my case, the 9 leftover points still show after modifying the location with Cheat Engine but pressing ESC still brought up the “SELECT CLASS” option and lets me complete my character.  Also, even though LORD is shown, I was unable to select it. (I will hack it later)

Image

Illustration 14

So there I am, ready to run the dungeon with my SUPERMAN Fighter, Mage, Priest, Bishop, or Samurai (empty slot D is for Thief which requires a Neutral or Evil character. Empty slot H is for Ninja which requires an Evil character).  Repeat this process 5 more times for a full party of modified characters.

*GriN*

In Part 2, I will show you how to produce even BETTER characters like this:

Image

Illustration 15

 

Disappointment Strikes Again!

It has probably happened to you many times as it has happened to me.  You search the internet to find some FREE software to perform some function and find many links.  As you search through the links you find that most of them are pointing to Trialware, Shareware, or Crippleware instead of Freeware.  Sometimes, as in the events leading up to my posting this information, you see something that really does seem to be freeware and not some crippled down version of some commercial software.  So, as it happens, today I searched for “Free, YouTube, Downloader” because my internet provider doesn’t seem to be able to get anywhere near the download speeds promised when I signed up for the service (another story) and so YouTube videos are constantly pausing while I try to watch them.  I figured the solution was to download the video and watch it off of my local hard drive.  I found this instead: http://www.e-zsoft.com/YouTube-Downloader.html

It LOOKS pretty good. No signs that it is not free, in fact it shows this:

  • E-Zsoft YouTube Downloader includes Flash Player, easy play downloaded Flash(flv) files in your local PC. It’s totally Free!
  • YouTube Downloader insides auto update features.
  • Runtime activation
  • The YouTube Downloader STD version is totally free with full function
  • YouTube Downloader has clean UI style and easy to use.

However, after spending the time to download the file and after the install, you get presented with this notice:

Whoah!  Back the horse up!  WHAT!?  Limitation to size and 7 day trial period! Wonderful!  What a SCAM!  Waste your time downloading and installing before you find out that in fact it is not Freeware!

I instantly uninstalled the software.  I did not test it, did not even start up the program other than to run the Uninstall.exe in it’s directory on my Hard drive (it did not show up in my Control Panel / Uninstall software listing.)  During the uninstall it comes up with a comments box to ask why you are uninstalling it.  I did not put the comments that they deserved, simply told them that I was putting them on my SCAM list.

New Utility Knife is a Big Disappointment

I often use a utility knife around the house and yard to cut string, carboard, plastic bottles, etc.  I have had one utility knife from ACE for a long time. I think that I got this particular knife in the late 60’s, but I may have lost that one and replaced it.  Here is what it looks like:

 The knife is a simple design and has served me well for many years.  You remove one screw and open the knife to replace the blade.

 This particular knife takes about a minute to replace the blade (or turn it around if needs   it)

 

Here is the knife as it looks when you open it up.  The blade slide is on the right top and there is a place to store spare blades in the bottm right.  A nice design for applications that do not damage the blade very often.

Unfortunately, I misplaced this knife and needed a replacement so I bought one that quickly became my favorite Utility Knife.

 

 This is my preferred utility knife now.  It is the Pro Series from BK Tools.  The black thumbwheel on the right adjusts how easy it is to slide the blade in or out.

 

 Here is the left side.  The thumb slide to push the blade out is silver and of a decent size and grip for easy use.  On the far right is a button you press to pull out the blade holder.

 

 Here is the blade holder partially removed.  The thumb slide button is just sitting on top of the blade holder.

 

Here the BK Tools knife is taken apart showing all the parts and the spare “break-apart” blades.  When one part of the blade becomes too dull, you break off the end and there is a fresh tip to be used.  Each replacement blade has about 8 segments.  No tools are needed to dismantle the knife, to replace the blades, etc.

 

 Here I have just rolled the thumb button off of the blade holder.  There is a bump on the thumb button that fits into a hole in the blade to push it out.  The blade holder can be completely removed without the blades falling out of it.

 

On the back of the blade holder is a spring loaded piece of metal that holds the blades from falling out if the slide is removed from the handle of the knife. Here I am lifting the catch so the blades can be removed.

 

The blade holder slides out easily for refilling with blades.  It slides back in with little effort to keep the slider button in place (it just sits loosely on top until the holder is back inside the handle).

 

I left my BK Tools Utility Knife at someone’s house and needed one to use right away so I purchased a new knife with some interesting features.  This is the Stanly Bostitch 789.  It holds two blades side by side and you can slide either one of them out for use.  This is great for me where I use a straight blade for cutting cardboard or plastic and use a curved blade to cut twine.  Here the new blade storage is open showing the two spares that come with the knife.  I did not care for the way the storage compartment was latched or how it is opened by pushing a button on top of the knife.

 

 You can see the two thumb sliders on the top, only one of which can be used at a time.

 Replacing the blades is another story.  First, it uses a TP10 torx bit to remove the two fasteners.

 

 There are LOTS of parts and pieces to this knife. It was easy to take apart once I found my torx bit.

 

Getting it back together proved to be not as easy.  It seems that I had to fight with every piece to get it to stay in place for assemlby.  It is quite likely that I will dispose of this knife in the near future.  Now, where did this tiny part come from?  I think this knife is a good idea but the design and functionality is very poor.  I highly doubt if they have repeat sales on this knife.

To wrap it up, I will probably be using two knives in the future.  One knife (my really old one) with a curved blade installed and another knife (the BK Tools) with “no tools required, super easy to replace” straight blades.

Reading a Book Can Change Your Perspective!

Why I Was Not a “Team” Sports Fan

 When I was growing up, and I believe it still holds today, many Jocks were Jerks.  They were all full of themselves and treated everyone else poorly.  If you think back, you can probably think of many instances of poor treatment of others performed by jocks.  Football players were probably the worst, pushing everyone around in the hallways or stuffing someone into a locker just because the football players were the biggest and strongest guys in the school.  OK, so immaturity plays a large part of that behavior while the players are in High School, but University level is much the same.  It is something that I call “The Team Player Attitude” and it manifests itself off and on the field of play.

 Team players need an attitude of working cooperatively with their teammates in order to do well in the competition.  Each player needs to do the best that they can to make the full team a winner.  If you look at two people on a football team, say one of them is the Quarterback and one is a Blocker, and look at their individual roles then it may seem that the more important role is that of the Quarterback running the ball across the goal line.  That IS the object of the sport after all, to get the football across the goal line more times than your opponent.  But if you remove the blockers from the game then the quarterback is not going to have time to throw the ball or there will be no path to run up the field.  Blockers give the quarterback some time to look, think, and throw.  Or, they make a space for the quarterback to dash up the field for a few yards.  BOTH players are needed, and they know it.  They rely upon each other to do their best at all times so the team will win.

 I know very few people that don’t enjoy watching a good competition.  Humans love to compete against each other, and sometimes against animals or machines too.  It is part of our makeup.  To make ourselves better at something we compete.  From early childhood through the rest of our lives we compete.  We play games, run races, play tag or dodge ball or football.  We build machines to compete, racecars, rocket ships, soap box racers.  We have spelling contests, beauty contests, arm wrestling, weight lifting, golf, football, baseball, softball, all kinds of competitions to make us better at something.  And, for those who don’t compete in any specific competition, they can enjoy the game as one of the many spectators.  They are the cheering fans in the stands that wave their arms, stomp their feet, chant their team spirit down upon the people representing them on the field.  They strain to send energy, strength, or pain relief to the warriors on the battlefield.  They shout words of encouragement to THEIR team until the battle is over.

 Beginning of the game:

Referee to both coaches at coin toss: “I expect to see a clean and honest competition.”

Late in the game:

Coach to one of his players:  “He is limping a bit on that left leg, run in and hit him from the side and you can put him out for the rest of the season.”

Player response: “But coach, I’ll get a penalty and we’ll lose 15 yards!”

Coach:  “That’s OK boy, do it for the team and you will be a hero!”

 

I believe that conversation took place at the last football game that I watched from the sidelines until many years later when I had a child playing in the game.

 From http://www.thefreedictionary.com/strategy

strat·e·gy (str t -j )

n. pl. strat·e·gies

1.

a. The science and art of using all the forces of a nation to execute approved plans as effectively as possible during peace or war.

b. The science and art of military command as applied to the overall planning and conduct of large-scale combat operations.

2. A plan of action resulting from strategy or intended to accomplish a specific goal. See Synonyms at plan.

3. The art or skill of using stratagems in endeavors such as politics and business.

 The “Plan” was to remove a good player from the game by giving him an injury, perhaps it would take him out for the full season.  The plan worked, for the full season and perhaps longer.  I learned that day that some coaches were encouraging their players to go against the rules, to intentionally injure other players so the team had a better chance of winning. 

 Since that day I have had others tell me “it is part of the strategy, part of the game, everyone expects it.”  But, that still does NOT make it right.  To me, it is not teaching our children worthwhile values.  It is teaching our children that it is OK to do something, anything, for the team.  It is OK to cheat if it is for the team.  It is OK to hurt others if it is for the team.  And, these lessons still apply when football season is over and now “the team” is three buddies that decide to rob a store because they are broke and “the team” needs money.  Do whatever it takes to help “the team.”

 It is no surprise that the winners chose to “keep the win” because they did not get caught cheating by the referees in http://deadspin.com/5873578/the-ragin-cajuns-used-the-rare-basketball-power-play-to-beat-western-kentucky-on-this-buzzer+beater

 “It is OK to cheat if you do it for the team, and even better if you don’t get caught.”  The whole world knows that your school cheats!  More yet, we know that you have no honor or you would have forfeited the game.  Even if the extra man on the floor was a mistake on your part, it was against the rules and it allowed you to win.  I think they should strip you of your season, not let you compete for another season.  Isn’t that what they do to players who take steroids?  Great players are kept from the hall of fame for cheating!

 I don’t normally watch team sports on television because it brings back the memory of me being on the sideline at a football game, taking pictures, and overhearing one coach telling his player to injure someone else on purpose even though the method to do it was against the rules.  And, until recently, I had no plans to ever watch any team sports on television or from the stands (unless of course I had a relative in the game).  I just read “Two Decades and Counting: The Streak, The Wins, The Hawkeyes, Thru the Eyes of Roy Marble” by Brian Meeks and Roy Marble. Prior to buying the book I was familiar with Brian’s writing from his blog at http://extremelyaverage.com/  otherwise I would never have purchased a book on sports.  After reading the book, it has me thinking that it is not team sports that I don’t like, it is the coaches and the strategy.  The players may be the ones that do the bidding but they have been conditioned to follow whatever the coach tells them.  So, maybe I will watch some sports and concentrate on the players, and the other people that make the game, the fans.  I doubt if I’ll once again become a foot stomping, screaming fan but perhaps I will dust off my cameras and go take a few pictures.

At What Age Do Children Become “Aware”?

I recently read something interesting on FaceBook or at http://www.facebook.com/#!/crowlove48/posts/325066207513500 that talked about a cashier telling a customer that the older generation never thought about the world and conservation of natural resources.  I would suggest that you read the story located at the link to get the full thought.

The article started me thinking about how much of our resources are spent on the younger generation before they become aware that they can (and should) conserve natural resources.  How many times was a light left on all day while the child was away at school?  How long did a fan run with nobody in the room? How many trips in the car when feet or bicycle would have sufficed?

When I was single, and living in an all electric home, my electricity bill rarely went over $35 in a month and quite often it was about $25 or even $23 in a month.  With a wife and two children it was not uncommon for the SAME HOUSE to have an electric bill of over $300 in one month.

Children find it difficult to turn anything off once they have turned it on.  A fan stays on 24 hours a day even if the child goes away for the weekend or for a week or two unless a parent turns it off.  A child will turn on the hot water to run down the drain before going to look for fresh clothing to wear after a shower.  The water may run for 5 or 10 minutes before the child steps into the shower.  A child will turn on every light in the house before going to bed.  A child will leave the television on 24 hours a day just for “background noise”.  A child will drink a 20 ounce bottled water that costs $1 rather than refill a glass from a 5 gallon refillable water cooler that costs $1.75 per 5 gallons.  A child’s radio, computer, television, lights, fans, etc will always be running unless the child actually wants it turned off for some unfathomable reason.  An article of clothing can only be worn a few times before it becomes “too old” to be seen in public.  If the parent won’t get a new piece of clothing for the child, then that old one becomes damaged beyond usability by some mysterious forces/accidents.

After a child moves away from home and is on their own, paying bills, then some things change.  Lights get turned off, fans stop turning when not actually in use, cars sit in parking spots for longer periods of time.  These changes are economic changes, performed to conserve limited finances of the child.

But, at some point, the child can afford to keep the lights on, the fan running.  They begin to “choose” to have them off for reasons beyond financial.  They choose to ride a bicycle to the store for a few groceries rather than drive the car.  They choose to drink water from a refillable container rather than from a new 20 oz disposable bottle.  They become “aware”.

Now that they are “aware”, they begin to lecture the “older generation” about how much we have wasted the world’s natural resources!